2013-05-20 45 views
1

摘要:我想在我的测试中使用Module断言。使用Codeception,Symfony2功能测试服务如何添加断言?

此前我已经使用PHPUnit测试测试了Symfony2服务。这很好,但我想使用一些Codeception Symfony2模块提供的工具以及更清晰的测试风格。

我创建了一个新的套件具有以下services.suite.yml

class_name: ServiceGuy 
    modules: 
    enabled: [Symfony2, Doctrine2, Filesystem, ServiceHelper] 

我跑构建和生成:CEST并与

public function getServiceUrl(\ServiceGuy $I) { 
    $this->myservice = $I->grabServiceFromContainer("myservice"); 
    $I->wantTo("get service URL"); 
    $I->seeTrue("http://example.com/services" 
        == $this->ecservice->getServiceUrl()); 
} 

该测试通过一个ServiceCest.php测试文件因为我向我的ServiceHelper.php文件添加了断言功能。

class ServiceHelper extends \Codeception\Module { 
    function seeTrue($flag) { 
    $this->assertTrue($flag); 
    } 
} 

Module类有一套丰富的断言函数,我希望能够直接在我的测试中使用。但我不认为模块对象可用于测试。不得不向ServiceHelper添加一系列断言函数似乎是重复的。 有没有更好的方法?

例如在phpunit测试中,我可能会有这些断言。

$ station = $ ecservice-> getStation(“Auckland”);

$ this-> assertEquals(1,count($ stations)); $ this-> assertEquals('Auckland',$ station-> getDisplayName());

我的问题是,是否有办法在功能测试中拥有所有这些断言,或者是否需要将大量特定于测试的断言移动到助手中。

单位模块似乎提供了许多这些设施 - 但已被弃用。我试过把\ PHPUnit_Framework_Assert :: assertEquals(1,count($ stations));测试中的 - 但这会引发未由测试工具处理的失败的异常。

感谢安德鲁

PS我标签这个“codeception”,但我没有点呢。也许别人可以。

回答

2

是的。我们由于滥用太多而弃用它。

在你的情况下,你应该使用传统的PHPUnit的测试风格。 Codeception有2个选项,生成:测试 - 获得一些Codeception助手或生成:phpunit以获得普通的PHPUnit测试,没有魔法。

请在此阅读我的文章。在那里我有一些提示,比如在单元测试中使用容器。

http://codeception.com/02-12-2013/testing-symfony2.html