Kim*_*nce 5 php zend-framework
我正在使用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();
Run Code Online (Sandbox Code Playgroud)
...测试运行正常,但有关Zend_Loader被弃用的警告.
如果我使用此代码,但是......
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
Run Code Online (Sandbox Code Playgroud)
测试找不到库类和致命错误结果.
在我的application.ini中,我有一行autoloaderNamespaces [] ="CP_".似乎Loader类可以看到它,但不是Autoloader类.好奇...
有任何想法吗?
谢谢!
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_'
),
),
));
Run Code Online (Sandbox Code Playgroud)