2013-02-08 2 views
13

Я следую официальному учебнику Zend Framework 2 для версии 2.1. В разделе Unit Testing, где я должен запускать PHPUnit в модуле/Application/теста я бегу в следующей задаче:Zend Framework 2 учебник: модуль (приложение) не может быть инициализирован

[email protected]:~/Desktop/zf2-tutorial/module/Application/test$ phpunit 
PHPUnit 3.7.13 by Sebastian Bergmann. 

Configuration read from /home/user/Desktop/zf2-tutorial/module/Application/test/phpunit.xml.dist 

E 

Time: 0 seconds, Memory: 4.00Mb 

There was 1 error: 

1) ApplicationTest\Controller\IndexControllerTest::testIndexActionCanBeAccessed 
Zend\ModuleManager\Exception\RuntimeException: Module (Application) could not be initialized. 

/home/user/Desktop/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php:140 
/home/user/Desktop/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php:81 
/home/user/Desktop/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:460 
/home/user/Desktop/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:204 
/home/user/Desktop/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/ModuleManager/ModuleManager.php:100 
/home/user/Desktop/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php:239 
/home/user/Desktop/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:146 
/home/user/Desktop/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:173 
/home/user/Desktop/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:193 
/home/user/Desktop/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:236 
/home/user/Desktop/zf2-tutorial/module/Application/test/ApplicationTest/Controller/IndexControllerTest.php:20 

FAILURES! 
Tests: 1, Assertions: 0, Errors: 1. 

Я скопировал содержимое IndexControllerTest.php из учебника.

<?php 

namespace ApplicationTest\Controller; 

use Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase; 

class IndexControllerTest extends AbstractHttpControllerTestCase 
{ 
    public function setUp() 
    { 
     $this->setApplicationConfig(
      include '/home/user/Desktop/zf2-tutorial/config/application.config.php' 
     ); 
     parent::setUp(); 
    } 

    public function testIndexActionCanBeAccessed() 
    { 
     $this->dispatch('/'); // this is line 20 
     $this->assertResponseStatusCode(200); 

     $this->assertModule('application'); 
     $this->assertControllerName('application_index'); 
     $this->assertControllerClass('IndexController'); 
     $this->assertMatchedRouteName('home'); 
    } 
} 

У меня нет подсказки, почему приложение не будет инициализироваться, и я был бы признателен за любые указатели.

+0

Моя проблема была с разрешениями, которые у меня были в папке и файлах модуля. (Я на ПК Ubuntu) – leticia

ответ

-1

Проверьте файл application.config в папке конфигурации Root, где мы должны определить приложения в 'modules'.

Пример кода:

'modules' => array(
     'Application', 
     'FrontEnd', 
      ), 
+2

Боюсь, что это не так. В моем config/application.config.php у меня есть '' modules '=> array ( ' Application ', ' Album ', ), ' –

31

Это проблема самозарядные, которая может быть связана с возможностью module_paths в config/application.config.php (в учебнике, это один у вас есть в /path/to/application/config/test/application.config.php).

Это application.config.php вероятно, выглядит следующим образом:

return array(
    'modules' => array(
     'Application', 
     'Album', 
    ), 

    'module_listener_options' => array(
     'module_paths' => array(
      './module', 
      './vendor', 
     ), 
    ), 
); 

Чтобы устранить проблему, измените значение ./module в абсолютный путь, например __DIR__ . '/../module, предполагая, что application.config.php в config/ в корневой директории вашего приложения.

Чтобы уточнить: проблема возникает из-за того, что ./module - это путь относительно вашего cwd. Ваш cwd при запуске phpunit находится внутри тестового каталога, где нет (очевидно) любого module реж.

+0

Спасибо за ответ @Ocramius Я попробовал это, но я получаю' PHP Неустранимая ошибка: вызов неопределенного метода ApplicationTest \ Controller \ IndexControllerTest :: assertModule() в /var/www/test/zf2-tutorial/module/Application/test/ApplicationTest/Controller/IndexControllerTest.php в строке 22' не уверен, что его решая одну проблему и вызывая другую. –

+0

Ну, проблема, похоже, решена там ('IndexControllerTest :: assertModule' не существует, это еще одна проблема). Мы можем об этом поговорить. – Ocramius

+0

Кажется, что это должно быть 'assertModuleName' для всякой ссылки, похоже, довольно много нуждается в обновлении в этом руководстве пользователя. –

Смежные вопросы