我有一个绑定了动作和过滤器的 Yii 控制器,如下所示:
...
public function testAction() {}
public function filters() {
return array(array('CMyFilter +test'));
}
...
我不知道如何测试每次执行 testAction() 时都会调用 CMyFilter 的简单事实。
我的测试如下所示:
$filter = $this->getMockBuilder('CMyFilter')
->disableOriginalConstructor()
->setMethods(array('preFilter'))
->getMock();
$filter->expects($this->once())
->method('preFilter')
->will($this->returnValue(true));
并且它失败并显示一条消息«方法名称的预期失败等于调用 1 次时。方法预期调用1次,实际调用0次»
实际上我可以调用 Yii::app()->getRequest()->isAjaxRequest() 而不是使用过滤器,并在我的测试中模拟 CHttpRequest,但我觉得它有点奇怪。
有任何想法吗?