【发布时间】:2013-05-04 10:54:36
【问题描述】:
我正在为一个使用 CakePHP 2.3 的新网站编写单元测试。一切都很顺利,除了一件事。我想测试 beforeFilter() 和 beforeRender() 函数。 beforeFilter() 我可以通过创建一个模拟对象来轻松测试
$app_controller_mock = $this->generate(
'App',
array(
'components' => array(
'Session'
)
)
);
$app_controller_mock->beforeFilter();
这将运行该函数,但它不会给我有用的东西,如$this->vars、$this->content 等。在这个特定的函数上没关系,但在我的 beforeRender() 中,我手动设置了 viewVar我想在我的测试用例中检查。
$app_controller_mock->beforeRender();
$this->assertNotNull($this->vars['controller_name'], "'controller_name' viewVar is null");
当我执行上述操作时,我收到以下错误:
'controller_name' viewVar is null
Failed asserting that null is not null.
这样做的“正确”方法是什么?
【问题讨论】:
-
不确定,但 viewVar 不应该位于
$app_controller->viewVars['xxx']中吗? -
他们是。不过,我想使用内置的 testAction() 。我想手动调用它并且只是检查 viewVars 暂时可以工作。如果我的应用程序变得更加复杂,尽管它可能会变得多毛。
-
@Derek 我刚刚发布了一个答案,刚刚注意到这个问题有多老,但我希望它对未来的人有所帮助(因为我相信你已经找到了一个适合你的解决方案现在)
标签: php unit-testing cakephp cakephp-2.0