我正在使用Yii2,并希望在我的验收测试中包含灯具。
使用单元测试,您可以将夹具特征添加到类中,然后使用fixtures方法返回一个灯具数组,然后从$this->loadFixtures()
方法调用_before()
,从$this->unloadFixtures()
调用_after()
Paste:=xlPasteValues
方法。这非常有效。
使用Cept验收测试时,不会使用类,所以我不知道如何在此过程中使用灯具。
使用Cest文件我尝试将fixtureTrait添加到Cest类,但它不起作用。我是否应该将夹具特性添加到Cest文件中?
因此,使用具有验收测试的灯具的正确方法是什么?
答案 0 :(得分:2)
经过大量的谷歌搜索后,我找到了一个满意的解决方案。
使用Cept文件,因为他们不使用类,你必须在YAML配置中包含Yii2模块,但只包括灯具部分。
在acceptance.suite.yml:
modules:
enabled:
- WebDriver
- Yii2:
part:
- init
- fixtures
transaction: false
我正在使用selenium,所以我也启用了WebDriver模块。我还发现有必要设置transaction: false
,否则我的登录功能无效
(可能是由于交易数据无法用于网络请求)
然后我必须运行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类一样简单,尽管我没有尝试过这个。
以下是一些有用的链接:
Codeception Yii2 Fixtures Documentation
CodeCeption Fixtures Issue 4099