我正在为我的控制器编写一些单元测试但是我遇到了一个问题,即在我的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'
)
控制器本身没有定义任何组件,因此没有任何问题导致问题,不确定问题在这里或如何解决。
答案 0 :(得分:1)
我没有烘焙我的应用程序控制器,所以我错过了一些代码行。要确保正在加载正确的AppController,控制器顶部需要以下代码行。
App::uses('AppController', 'Controller');
添加此行可确保Class Loader知道加载AppController,而应用程序在没有它的情况下可以工作,最好将其包含在内。