经过大量的谷歌搜索,我找到了一个令人满意的解决方案。
对于 Cept 文件,由于它们不使用类,因此您必须在 YAML 配置中包含 Yii2 模块,但只有固定装置部分。
在acceptance.suite.yml中:
modules:
enabled:
- WebDriver
- Yii2:
part:
- init
- fixtures
transaction: false
我使用的是 selenium,所以我也启用了 WebDriver 模块。我还发现有必要设置transaction: false,否则我的登录无效。
(可能是由于 Web 请求无法获得交易数据)
然后我必须运行构建命令以使$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
Similar StackOverflow issue 45881907
Yii2 Fixtures Documentation