2013-02-08 165 views
13

我正在關注2.1版的官方Zend Framework 2教程。在Unit Testing部分,在這裏我應該跑在模塊/應用/測試PHPUnit的我遇到了以下問題: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 PC上) – leticia

回答

-1

檢查根配置文件夾中的application.config文件,我們必須在'模塊'中定義應用程序。

示例代碼:

'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' for everyones引用看起來很多仍然需要在本用戶指南中更新。 –

相關問題