在 Codeception 中通过验收测试使用固定装置的正确方法是什么?
What is the proper way to use fixtures with Acceptance tests in Codeception?
我正在使用 Yii2,并希望在我的验收测试中包含固定装置。
通过单元测试,您将 fixture 特征添加到 class,然后 return 使用 fixtures 方法的 fixture 数组,然后从 _before()
调用 $this->loadFixtures()
方法,$this->unloadFixtures()
来自 _after()
方法。这非常有效。
对于 Cept 验收测试,class不使用 es,所以我不知道您将如何在此过程中使用固定装置。
对于 Cest 文件,我尝试将 fixtureTrait 添加到 Cest class,但没有成功。我是否应该将夹具特征添加到 Cest 文件中?
因此,在验收测试中使用固定装置的正确方法是什么?
经过大量谷歌搜索,我找到了满意的解决方案。
对于 Cept 文件,因为它们不使用 classes,所以您必须在 YAML 配置中包含 Yii2 模块,但仅包含 fixtures 部分。
在acceptance.suite.yml中:
modules:
enabled:
- WebDriver
- Yii2:
part:
- init
- fixtures
transaction: false
我使用的是selenium,所以我也启用了WebDriver模块。我还发现有必要设置transaction: false
,否则我的登录不起作用。
(可能是因为交易数据对网络请求不可用)
然后我必须 运行 构建命令才能使 $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 class 一样简单,尽管我还没有尝试过。
这里有一些有用的链接:
Codeception Yii2 Fixtures Documentation
CodeCeption Fixtures Issue 4099
Similar Whosebug issue 45881907
我正在使用 Yii2,并希望在我的验收测试中包含固定装置。
通过单元测试,您将 fixture 特征添加到 class,然后 return 使用 fixtures 方法的 fixture 数组,然后从 _before()
调用 $this->loadFixtures()
方法,$this->unloadFixtures()
来自 _after()
方法。这非常有效。
对于 Cept 验收测试,class不使用 es,所以我不知道您将如何在此过程中使用固定装置。
对于 Cest 文件,我尝试将 fixtureTrait 添加到 Cest class,但没有成功。我是否应该将夹具特征添加到 Cest 文件中?
因此,在验收测试中使用固定装置的正确方法是什么?
经过大量谷歌搜索,我找到了满意的解决方案。
对于 Cept 文件,因为它们不使用 classes,所以您必须在 YAML 配置中包含 Yii2 模块,但仅包含 fixtures 部分。
在acceptance.suite.yml中:
modules:
enabled:
- WebDriver
- Yii2:
part:
- init
- fixtures
transaction: false
我使用的是selenium,所以我也启用了WebDriver模块。我还发现有必要设置transaction: false
,否则我的登录不起作用。
(可能是因为交易数据对网络请求不可用)
然后我必须 运行 构建命令才能使 $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 class 一样简单,尽管我还没有尝试过。
这里有一些有用的链接:
Codeception Yii2 Fixtures Documentation
CodeCeption Fixtures Issue 4099
Similar Whosebug issue 45881907