2015-12-02 61 views
0

我正在使用Codeception爲Symfony項目進行驗收測試。我需要測試一切,這意味着測試頁面(html內容)以及它們執行的ajax調用(JSON內容)。一些Codeception模塊是否不兼容?

我已經啓用了Symfony2的模塊在我的套房設置,但我覺得在這幾個方法來檢查JSON字符串,所以我想我應該讓REST模塊爲好。但是,如果我這樣做,其他以前存在的測試失敗。

例如,這個簡單的測試:

public function privateExtranetHome(AcceptanceTester $I) 
{ 
    $I->wantTo('test something'); 
    $I->amOnRoute('acme_site_home.es'); 
    $I->assertEquals(
     'container', 
     $I->grabAttributeFrom('#container-slider', 'class') 
    ); 
} 

這不是一個JSON測試的測試,只是在我Cest類中已存在的測試,即通過當我只有啓用了Symfony2的模塊,而現在失敗我添加了REST模塊。該錯誤信息是:

Scenario: 
* I am on route "acme_site_home.es" 

    [Page] http://localhost/es 
    [User] anon. [] 
* I grab attribute from "#container-slider","class" 

Fatal error: Call to a member function hasAttribute() on null in [...]\Codeception\Module\REST.php on line 993 

也許amOnRoute()方法與REST模塊不兼容,因爲啓用了後者的時候,我得到一個空的響應。但是,我的問題是:是否有一些文檔,指出哪些模塊不兼容並且不應該一起啓用?或者我應該按照經驗法則爲每個模塊使用單獨的套件?


以防萬一,我接受套件設置如下:

class_name: AcceptanceTester 
modules: 
    enabled: 
     - Asserts 
     - Db 
     - Symfony2 
     - Doctrine2 
     - \Tests\Helper\Acceptance 

而且我Codeception設置:

namespace: Tests 
actor: Tester 
paths: 
    tests: tests 
    log: tests/_output 
    data: tests/_data 
    support: tests/_support 
    envs: tests/_envs 
settings: 
    bootstrap: _bootstrap.php 
    colors: true 
    memory_limit: 1024M 
extensions: 
    enabled: [ Codeception\Extension\RunFailed ] 
modules: 
    config: 
     Db: 
      dsn: 'mysql:host=localhost;dbname=acme_test' 
      user: 'root' 
      password: 'blahblah' 
      dump: 'tests/_data/dump.sql' 
      populate: false 
      cleanup: false 
     Doctrine2: 
      depends: Symfony2 
      cleanup: false 
     PhpBrowser: 
      url: http://acme.com 
     WebDriver: 
      browser: firefox 
      url: http://acme.com 
     REST: 
      depends: Symfony2 
      url: http://acme.com 

回答

0

REST模塊兼容,並依靠框架模塊來處理要求。 但是你發現未報告的不兼容 - grabAttributeFrom方法定義兩個模塊 - Symfony2中休息。我會爲此提出一個問題。

您可以使用一種解決方法 - grabAttributeFrom在REST模塊的XML部分中定義,因此如果您的REST請求只返回JSON,則只能啓用JSON功能。

REST: 
    depends: Symfony2 
    part: JSON 
+0

問題鏈接:https://github.com/Codeception/Codeception/issues/2604謝謝@Naktibalda。 – marcv

+0

這個建議有幫助嗎?或者您是否需要REST中的XML功能? – Naktibalda

+0

它幫助,我不需要XML。謝謝! – marcv