这是一个关于PHP单元测试的问题,给了我一个找不到类的错误。
背景
我正在使用ZendStudio10.5开发一个ZendFramework2应用程序。我加载了一些模块,包括ZfcUser
和BjyAuthorize
FedcoUser是具有控制器保护的模块,该控制器保护使用BjyAuthorize:的保护规则
<?php
namespace FedcoUser'Controller;
use Zend'View'Model'ViewModel;
use ZfcUser'Controller'UserController as ZfcUserController;
class MachinistController extends ZfcUserController
{
public function indexAction()
{
if (!$this->zfcUserAuthentication()->hasIdentity()) {
return $this->redirect()->toRoute($this->getOptions()->getLoginRedirectRoute());
}
return new ViewModel();
}
}
使用ZendStudio10.5原生菜单,我为上面的控制器创建了一个测试用例。当我运行它时,我得到以下错误:
Debug Error: FedcoUser/Controller/MachinistController.php line 8 - Class 'ZfcUser'Controller'UserController' not found
我的假设是,PHPUnit的自动加载器无法确定类的位置,因为它找不到的类位于
vendor/zf-commons/zfc-user/src/ZfcUser/Controller/UserController.php
我还不熟悉PHPUnit是如何修复这个错误的。PHPUnit甚至有自动加载器吗?如果有帮助的话,我模块的/test/
文件夹中有名为bootstrap.php
、phpunit.xml
和TestConfiguration.php
的文件。我尝试随机添加各种模块和路径到TestConfiguration.php
文件,如下所示,但没有帮助:
$additionalModulePaths = array(
'ZfcUser' => realpath('vendor/zf-commons/zfc-user/src/ZfcUser/Controller/UserController.php'),
);
你能帮忙吗?
我最终在TestConfiguration.php文件中的配置中加载了额外的命名空间:
$additionalNamespaces = array(
'ZfcUser'Controller' => __DIR__ . '/../../../vendor/zf-commons/zfc-user/src/ZfcUser/Controller/'
);
它非常适合我的bootstrap.php
,它有以下代码:
// setup autoloader
AutoloaderFactory::factory(
array(
'Zend'Loader'StandardAutoloader' => array(
StandardAutoloader::AUTOREGISTER_ZF => true,
StandardAutoloader::ACT_AS_FALLBACK => false,
StandardAutoloader::LOAD_NS => $additionalNamespaces,
)
)
);