2

我正在为我的控制器编写一些单元测试,但是我遇到了一个问题,即在测试期间我的 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'
)

控制器本身没有定义任何组件,因此没有任何东西会导致问题,不确定这里的问题是什么或如何解决它。

4

1 回答 1

1

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

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

添加这一行可确保类加载器知道加载 AppController,而应用程序在没有它的情况下也可以工作,最好包含它。

于 2014-01-06T22:46:54.403 回答