2014-06-25 113 views
0

我很難嘗試單元測試(phpUnitZF2中的一個模塊。我想要做的是確定在將GET參數傳遞給控制器​​時,頁面上的某個元素是否存在類名。單元測試時無法傳遞GET參數Zend Framework 2

這一切都從瀏覽器工作,但我無法獲得GET參數在嘗試單元測試時被識別。

這是我的單元測試代碼:

<?php 

namespace ComponentManager\Controller; 
use Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase; 

class ComponentManagerControllerTest extends AbstractHttpControllerTestCase 
{ 
    public function setUp() 
    { 
     $this->setApplicationConfig(
      include 'config/application.config.php' 
     ); 
     parent::setUp(); 
    } 

    public function testAdminComponentCodeCanBeAccessed() 
    { 
     $this->dispatch('/ComponentManager/requestComponent/product/details-1/details-1', 'GET', array('admin' => 1)); 
     // I also tried: $this->dispatch('/ComponentManager/requestComponent/product/details-1/details-1?admin=1'); 
     $this->assertResponseStatusCode(200); 
     $this->assertMatchedRouteName('ComponentManager/path'); 
     $this->assertControllerName('ComponentManager\Controller\ComponentManager'); 
     $this->assertControllerClass('ComponentManagerController'); 
     $this->assertActionName('requestComponent'); 
     $this->assertModuleName('ComponentManager'); 

     // test will fail here 
     $this->assertQuery('div.config-active-wrapper'); 
    } 
} 

「div.config活性-包裝」選擇工作正常,當我刪除了管理員參數存在支票在GET但是當我重新添加它,GET參數根本不被識別。有任何想法嗎?

回答

0

這裏的問題是單元測試是一個CLI操作,並且在CLI中沒有正在填充超全局狀況。簡單和愚蠢的:P

一個解決不使用超全局$ _GET在這裏,但通過一些ACL和控制器,而不是通過這種「admin」的參數。

+0

無論如何,您不應該在控制器中使用超全局變量,您應該使用'$ this-> params() - > fromQuery('admin');'來訪問變量,這可能會解決您的測試問題。 –

+0

這就是我打算做的事情,一旦我有一些ACL;) –

相關問題