2015-12-02 33 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