在使用ControllerTestCase进行测试期间,CakePHP AppController组件不会被组件继承

时间:2014-01-06 14:59:27

标签: php unit-testing cakephp cakephp-2.4

我正在为我的控制器编写一些单元测试但是我遇到了一个问题,即在我的AppController文件中定义的组件在测试期间没有被继承到我的控制器中。

例如,在我的AppController.php文件中,我有以下内容:

public $components = array('Auth' => array(
        'authenticate' => array(
                'Form' => array(
                        'fields' => array('username' => 'email')
                )
        )
), 'Session', 'DebugKit.Toolbar');

如果我转到相关控制器并在操作debug($this->components);中使用以下代码行,我会得到以下结果:

array(
        'Auth' => array(
                'authenticate' => array(
                        'Form' => array(
                                'fields' => array(
                                        'username' => 'email'
                                )
                        )
                )
        ),
        (int) 0 => 'Session',
        (int) 1 => 'DebugKit.Toolbar'
)

但是,在单元测试期间,相同的代码行将输出以下内容:

array(
        (int) 0 => 'Session'
)

控制器本身没有定义任何组件,因此没有任何问题导致问题,不确定问题在这里或如何解决。

1 个答案:

答案 0 :(得分:1)

我没有烘焙我的应用程序控制器,所以我错过了一些代码行。要确保正在加载正确的AppController,控制器顶部需要以下代码行。

App::uses('AppController', 'Controller');

添加此行可确保Class Loader知道加载AppController,而应用程序在没有它的情况下可以工作,最好将其包含在内。