Zend_Loader与Zend_Test和PHPUnit的Autoloader

时间:2011-06-16 10:20:59

标签: 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();

...测试运行正常,但有关Zend_Loader被弃用的警告。

如果我使用此代码,但是......

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();

测试找不到库类和致命错误结果。

在我的application.ini中,我有一行autoloaderNamespaces [] =“CP_”。似乎Loader类可以看到它,但不是Autoloader类。好奇...

有什么想法吗?

谢谢!

1 个答案:

答案 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_'
        ),
    ),
));