我正在使用PHPUnit和Zend Framework进行测试,并且在自动加载方面存在一些琐碎的问题。
首先,我不确定为什么我需要在phpunit bootstrap.php中设置自动加载。在生产环境中,index.php文件是不是加载它? (我的测试用例是扩展Zend_Test_PHPUnit_ControllerTestCase)。
其次,我很难用Zend_Loader_Autoload取代Zend_Loader。
如果我在我的bootstrap中使用此代码......
require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();
...测试运行正常,但有关Zend_Loader被弃用的警告。
如果我使用此代码,但是......
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
测试找不到库类和致命错误结果。
在我的application.ini中,我有一行autoloaderNamespaces [] =“CP_”。似乎Loader类可以看到它,但不是Autoloader类。好奇...
有什么想法吗?
谢谢!
答案 0 :(得分:5)
PHPUnit有时使用cli / php.ini配置而不是默认配置。这可能是您的问题所在的地方,因为您可能已经添加了库包含到php.ini的路径但忽略了将它们添加到cli / php.ini。
我手动将库添加到测试引导程序而不是通过ini文件。您可以尝试在引导程序中的自动加载器行下添加类似的内容:
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'basePath' => APPLICATION_PATH,
'namespace' => '',
'resourceTypes' => array(
'cplib' => array(
'path' => 'library/CP',
'namespace' => 'CP_'
),
),
));