模拟CakePHP配置::read()?

9avjhtql  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(128)

我正在使用CakePHP 2.x,我想写单元测试。
在控制器中,有几个位置存在从配置文件读取的内容,例如:

$dInterval = Configure::read('myapp.dinterval');

有没有办法在测试中模拟该值?

bvuwiixz

bvuwiixz1#

不,这样一个硬编码的静态调用是不能被模拟的,至少在应用程序、框架和PHP的一般工作环境中是不能的。从技术上讲,可以使用一个别名类来创建静态调用的模拟,但是这需要在测试环境之外设置别名,因为它需要在原始类被加载之前发生。
但是,您可以做的只是在测试操作之前写入配置,例如

Configure::write('myapp.dinterval', 123);

$result = $this->testAction(/* ... */);

原始配置在每次测试 * 之前 * 进行备份,并在每次测试 * 之后 * 进行恢复。

相关问题