首页 文章

Zend_Loader与Zend_Test和PHPUnit的Autoloader

提问于
浏览
5

我正在使用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 回答

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

相关问题