我有一个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次
Actualy我可以调用Yii :: app() - > getRequest() - > isAjaxRequest()而不是使用过滤器,并在我的测试中模拟CHttpRequest,但我发现它有点奇怪。
有什么想法吗?
答案 0 :(得分:0)
我认为你的问题是因为你的行动名称是“testAction”。操作的名称约定应采用以下格式:
public function actionName(){
}
因此,请将您的操作名称更改为actionTest()