我正在使用Yii2,并且希望在我的验收测试中包括一些固定装置。
通过单元测试,您可以将夹具特性添加到类中,然后使用fixtures方法返回一个夹具数组,然后从_before()方法调用_before(),从_after()方法调用$this->unloadFixtures()。这工作得很好。
对于Cept验收测试,类是不使用的,所以我不知道您将如何在这个过程中使用夹具。
对于Cest文件,我尝试将fixtureTrait添加到Cest类中,但它没有工作。我是否应该将夹具特性添加到Cest文件中?
因此,在验收测试中使用夹具的正确方法是什么?
发布于 2017-10-24 09:02:00
在做了大量搜索之后,我找到了一个令人满意的解决方案。
对于Cept文件,因为它们不使用类,所以您必须在YAML配置中包含Yii2模块,但只能包含固定部分。
在acceptance.suite.yml中:
modules:
enabled:
- WebDriver
- Yii2:
part:
- init
- fixtures
transaction: false我正在使用selenium,所以我还启用了WebDriver模块。我还发现有必要设置transaction: false,否则我的登录就无效了。
(可能是由于web请求无法获得事务数据)
然后,我必须运行build命令,以使$I->haveFixtures()方法可用。
codeception build因此,我现在可以将夹具作为Cept文件的一部分:
use tests\fixtures\DBAddressFixture;
use tests\fixtures\DBCustomerFixture;
use tests\fixtures\OAuthClientsFixture;
/* @var $scenario Codeception\Scenario */
$I = new AcceptanceTester($scenario);
$I->wantTo("Check that the account information page exists and works");
$I->haveFixtures([
'customer' => DBCustomerFixture::className(),
'address' => DBAddressFixture::className(),
'auth' => OAuthClientsFixture::className()
]);关于Cest档案。显然,它应该像将_fixtures()方法添加到Cest类一样简单,尽管我没有尝试过。
以下是一些有用的链接:
协同欺骗Yii2夹具文档
https://stackoverflow.com/questions/46853088
复制相似问题