总结:我想在我的测试中使用Module断言。
以前我使用PHPUnit测试测试了Symfony2服务。这没关系,但我想使用Codeception Symfony2模块提供的一些功能以及更清洁的测试风格。
我使用以下services.suite.yml
创建了一个新套件class_name: ServiceGuy
modules:
enabled: [Symfony2, Doctrine2, Filesystem, ServiceHelper]
我运行build并生成:cest并使用
获得ServiceCest.php测试文件public function getServiceUrl(\ServiceGuy $I) {
$this->myservice = $I->grabServiceFromContainer("myservice");
$I->wantTo("get service URL");
$I->seeTrue("http://example.com/services"
== $this->ecservice->getServiceUrl());
}
此测试通过,因为我在ServiceHelper.php文件中添加了断言函数。
class ServiceHelper extends \Codeception\Module {
function seeTrue($flag) {
$this->assertTrue($flag);
}
}
Module类有一组丰富的断言函数,我希望能够在我的测试中直接使用它。但我不认为模块对象可用于测试。必须向ServiceHelper添加一系列断言函数似乎是重复的。 还有更好的方法吗?
例如在phpunit测试中,我可能会有这些断言。
$ station = $ ecservice-> getStation(“奥克兰”);
$这 - >的assertEquals(1,计数($站)); $这 - >的assertEquals( '奥克兰',$站 - > getDisplayName());
我的问题是,是否有办法在功能测试中包含所有这些断言,或者是否必须将大量特定于测试的断言移入帮助程序。
单元 模块似乎提供了许多这些功能 - 但已弃用。
我试过把\ PHPUnit_Framework_Assert :: assertEquals(1,count($ stations)); 在测试中 - 但这会导致测试工具无法处理的故障异常。
谢谢Andrew
PS我会标记这个'代码',但我还没有得分。也许其他人可以。
答案 0 :(得分:2)
是的。我们因为过多的滥用而弃用它。
在您的情况下,您应该使用经典的PHPUnit测试样式。 Codeception有2个选项,生成:test - 获取一些Codeception帮助器或生成:phpunit以获得普通的PHPUnit测试而没有魔法。
请阅读我的帖子。我有一些技巧,比如在单元测试中使用容器。