摘要:我想在我的测试中使用模块断言。
以前我使用 PHPUnit 测试测试过 Symfony2 服务。这没关系,但我想使用 Codeception Symfony2 模块提供的一些设施以及更清洁的测试风格。
我使用以下 services.suite.yml 创建了一个新套件
class_name: ServiceGuy
modules:
enabled: [Symfony2, Doctrine2, Filesystem, ServiceHelper]
我运行了 build 和 generate: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("奥克兰");
$this->assertEquals(1,count($stations)); $this->assertEquals('Auckland',$station->getDisplayName());
我的问题是是否有办法在功能测试中包含所有这些断言,或者我是否必须将大量特定于测试的断言移动到帮助程序中。
Unit模块似乎提供了许多这些功能 - 但已被弃用。
我试着把 \PHPUnit_Framework_Assert::assertEquals(1,count($stations)); 在测试中 - 但这会引发测试工具未处理的失败异常。
谢谢安德鲁
PS我会标记这个'codeception',但我还没有要点。也许其他人可以。