Php 在Codeception中使用带有验收测试的夹具的正确方法是什么?

Php 在Codeception中使用带有验收测试的夹具的正确方法是什么?,php,yii2,codeception,Php,Yii2,Codeception,我正在使用Yii2,并希望在验收测试中包括夹具 通过单元测试,您将fixture trait添加到类中,然后使用fixture方法返回fixture数组,然后从\u before()方法调用$this->loadFixtures(),从\u before()方法调用$this->unloadFixtures()。这很好用 在Cept验收测试中,不使用类,所以我不知道如何在这个过程中使用fixture 对于Cest文件,我尝试将fixtureTrait添加到Cest类,但没有成功。我是否应该将fi

我正在使用Yii2,并希望在验收测试中包括夹具

通过单元测试,您将fixture trait添加到类中,然后使用fixture方法返回fixture数组,然后从
\u before()
方法调用
$this->loadFixtures()
,从
\u before()
方法调用
$this->unloadFixtures()
。这很好用

在Cept验收测试中,不使用类,所以我不知道如何在这个过程中使用fixture

对于Cest文件,我尝试将fixtureTrait添加到Cest类,但没有成功。我是否应该将fixture特性添加到Cest文件中


因此,在验收测试中使用夹具的正确方法是什么?

在做了大量的谷歌搜索之后,我找到了一个令人满意的解决方案

对于Cept文件,由于它们不使用类,您必须在YAML配置中包括Yii2模块,但仅包括fixtures部分

在acceptance.suite.yml中:

modules:
    enabled:
        - WebDriver
        - Yii2:
            part:
                - init
                - fixtures
            transaction: false
我使用的是selenium,因此我还启用了WebDriver模块。我还发现有必要设置
事务: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文件。显然,它应该像向Cest类添加
\u fixtures()
方法一样简单,尽管我还没有尝试过

以下是一些有用的链接:


什么?真的吗?这个问题是什么?我试着改写这个问题