在Codeception中使用具有Acceptance测试的灯具的正确方法是什么?

时间:2017-10-20 16:07:56

标签: php yii2 codeception

我正在使用Yii2,并希望在我的验收测试中包含灯具。

使用单元测试,您可以将夹具特征添加到类中,然后使用fixtures方法返回一个灯具数组,然后从$this->loadFixtures()方法调用_before(),从$this->unloadFixtures()调用_after() Paste:=xlPasteValues方法。这非常有效。

使用Cept验收测试时,不会使用类,所以我不知道如何在此过程中使用灯具。

使用Cest文件我尝试将fixtureTrait添加到Cest类,但它不起作用。我是否应该将夹具特性添加到Cest文件中?

因此,使用具有验收测试的灯具的正确方法是什么?

1 个答案:

答案 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

Similar StackOverflow issue 45881907

Yii2 Fixtures Documentation