2013-12-05 3 views
1

Это вопрос о тестировании модуля PHP, который дает мне ошибку класса, не найденной.Выполнение теста PHPUnit дает ошибку «Класс не найден»

фон

Я использую Zend Studio 10.5 для разработки приложений с Zend Framework 2. У меня есть несколько модулей, загруженных, в том числе ZfcUser и BjyAuthorize

FedcoUser является модулем, который имеет контроллер Guard, который использует правила караула BjyAuthorize:

<?php 
namespace FedcoUser\Controller; 

use Zend\View\Model\ViewModel; 
use ZfcUser\Controller\UserController as ZfcUserController; 

class MachinistController extends ZfcUserController 
{ 
    public function indexAction() 
    { 
     if (!$this->zfcUserAuthentication()->hasIdentity()) { 
      return $this->redirect()->toRoute($this->getOptions()->getLoginRedirectRoute()); 
     } 

     return new ViewModel(); 
    } 
} 

Использования Zend Studio 10.5 нативное меню, я создал тест для контроллера выше. Когда я запускаю его я получаю следующее сообщение об ошибке:

Debug Error: FedcoUser/Controller/MachinistController.php line 8 - Class 'ZfcUser\Controller\UserController' not found 

Мое предположение, что каким-то образом, автопогрузчики для PHPUnit не может выяснить, где класс помещаются, потому что класс не может найти расположен в

vendor/zf-commons/zfc-user/src/ZfcUser/Controller/UserController.php 

Я еще не знаком с тем, как PHPUnit работает, чтобы исправить эту ошибку. Есть ли у PHPUnit даже автозагрузчик? Есть файлы с именем bootstrap.php, phpunit.xml и TestConfiguration.php в папке моего модуля /test/, если это помогает. Я попытался случайно добавлять различные модули и пути к TestConfiguration.php файла, как показано ниже, но это не помогло:

$additionalModulePaths = array(
    'ZfcUser' => realpath('vendor/zf-commons/zfc-user/src/ZfcUser/Controller/UserController.php'), 
); 

Можете ли вы помочь?

+0

Кто вы используете автозагрузку в своем проекте? – sectus

+0

Я не уверен, что понял вопрос. Ответ, который я даю, может не иметь значения. Я использую ZendSkeletonApplication + несколько модулей Zfc + модуль BjyAuthorize. Я добавил модуль FedcoUser, который имеет Module.php с функцией getAutoloaderConfig(). есть также файлы autoload_classmap.php, autoload_function.php и autoload_register.php. Я могу опубликовать код внутри них, если он уместен. – Dennis

ответ

1

Я в конечном итоге загрузки дополнительных пространств имен в мою конфигурации внутри моего TestConfiguration.php файла:

$additionalNamespaces = array(
    'ZfcUser\Controller' => __DIR__ . '/../../../vendor/zf-commons/zfc-user/src/ZfcUser/Controller/' 
); 

, которые вписываться в красиво в моем bootstrap.php, который имел следующий код:

// setup autoloader 
AutoloaderFactory::factory(
    array(
     'Zend\Loader\StandardAutoloader' => array(
      StandardAutoloader::AUTOREGISTER_ZF => true, 
      StandardAutoloader::ACT_AS_FALLBACK => false, 
      StandardAutoloader::LOAD_NS => $additionalNamespaces, 
     ) 
    ) 
); 
Смежные вопросы