模拟 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(/* ... */);
原始配置在每次测试之前备份,并且在每次测试之后恢复。
我正在使用 CakePHP 2.x,我想编写单元测试。
在控制器中有几个地方存在从配置文件中读取的内容,例如:
$dInterval = Configure::read('myapp.dinterval');
有没有办法为测试模拟该值?
不,这样的硬编码静态调用不能被模拟,至少在应用程序、框架和 PHP 一般工作方式的上下文中不能。从技术上讲,可以使用别名 class 为静态调用创建模拟,但这需要在测试环境之外设置别名,因为它需要在加载原始 class 之前发生。
然而,您可以做的只是在测试操作之前写入配置,例如
Configure::write('myapp.dinterval', 123);
$result = $this->testAction(/* ... */);
原始配置在每次测试之前备份,并且在每次测试之后恢复。