在CakePHP控制器测试中创建Mock Auth对象

时间:2014-01-03 16:50:12

标签: unit-testing cakephp cakephp-2.4

刚刚开始在我的CakePHP应用程序中为我的控制器创建一些单元测试但是我完全不知道如何为Auth组件创建一个模拟器,我已经阅读了CookBook并认为我做对了,但不断被抛出这个错误。

Error: Call to a member function allow() on a non-object    

在我正在测试的控制器中,有一个带有以下代码的beforeFilter函数:

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('create');
}

在我的测试中,我包括以下内容:

$Leagues = $this->generate('Leagues', array(
    'components' => array(
        'Auth'
    )
));

我也玩过staticExpects(),但似乎没有多大影响(我也不确定我需要投入staticExpects())。

2 个答案:

答案 0 :(得分:0)

你是什么意思嘲笑?只是用你设置的数据填充对象?你得到的错误是因为你需要使用

$this->Auth->allow(array('create'))

答案 1 :(得分:0)

发现问题 - 我在AppController.php中包含了Auth组件,而不是在我试图测试的控制器中。通过将它与我的控制器特别包括在一起,错误就消失了。