Класс не найден при автоматической загрузке пользовательских типов ресурсов во время тестирования PHPUnit - PullRequest
0 голосов
/ 13 марта 2012

В моем проекте Zend Framework я использую некоторые пользовательские типы ресурсов, которые добавляю в загрузчик ресурсов в файле Bootstrap.php моего приложения.

<?php

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
        protected function _initAutoloader()
        {       
            $resourceLoader = $this->getResourceLoader();
            $resourceLoader->addResourceTypes(array(
                'infrastructure' => array(
                    'namespace' => 'Infrastructure',
                    'path'      => 'infrastructure/',
                ),
                'interfaces' => array(
                    'namespace' => 'Interface',
                    'path'      => 'interfaces/',
                ),
                'default' => array(
                    'namespace' => '',
                    'path'      => '/',
                ),
            ));
        }

        ...

}

Я могу автоматически загружать эти ресурсы при запуске приложения, но при запуске PHPUnit и попытке загрузить эти классы во время тестов их не удается найти.

PHP Fatal error:  Class 'Wbp_Infrastructure_Persistence_InMemory_TagRepository' not found in /var/www/worldsbestprizes/tests/library/Mbe/Validate/TaggedUriTest.php on line 37

Файл tests / bootstrap.php выглядит следующим образом.

<?php

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('Mbe_');

$application = new Zend_Application(
            APPLICATION_ENV,
            APPLICATION_PATH . '/configs/application.ini'
);

Есть личто-то, что я должен добавить к нему, чтобы разрешить загрузку этих пользовательских типов ресурсов?

1 Ответ

1 голос
/ 13 марта 2012

Вам необходимо зарегистрировать пространство имен Wbp_ аналогично тому, что вы делаете в файле tests / bootstrap.php:

$autoloader->registerNamespace('Wbp_');
...