如何测试该过滤器是在使用PHPUnit执行动作时触发的

时间:2013-11-13 11:53:12

标签: unit-testing yii filter phpunit

我有一个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,但我发现它有点奇怪。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为你的问题是因为你的行动名称是“testAction”。操作的名称约定应采用以下格式:

public function actionName(){
}

因此,请将您的操作名称更改为actionTest()