【发布时间】:2014-01-24 00:29:01
【问题描述】:
我正在为我的控制器编写一些单元测试,但是我遇到了一个问题,即在测试期间我的 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'
)
控制器本身没有定义任何组件,因此没有任何导致问题的东西,不确定问题出在哪里或如何解决。
【问题讨论】:
-
您的 AppController.php 文件在哪里?如果您在测试期间检查
get_included_files(),则可能不是您的应用控制器被加载。 -
CakePHP/Cake/Test/test_app/Controller/AppController.php 正在加载,而不是我的 AppController。奇数
-
您是否使用 composer 和 pear 安装了 CakePHP?你在加载 composer autoload.php 文件吗?
-
是的,使用 composer 和 pear 安装。我在 bootstrap.php
require APP . '/Vendor/autoload.php';中有以下行,以便加载作曲家 autoload.php。
标签: php unit-testing cakephp cakephp-2.4