模拟 CakePHP configure::read()?

mock CakePHP configure::read()?

我正在使用 CakePHP 2.x,我想编写单元测试。

在控制器中有几个地方存在从配置文件中读取的内容,例如:

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

有没有办法为测试模拟该值?

不,这样的硬编码静态调用不能被模拟,至少在应用程序、框架和 PHP 一般工作方式的上下文中不能。从技术上讲,可以使用别名 class 为静态调用创建模拟,但这需要在测试环境之外设置别名,因为它需要在加载原始 class 之前发生。

然而,您可以做的只是在测试操作之前写入配置,例如

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

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

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