Yii2 + Codeception:如何使用fixtures?

TSM*_*TSM 5 unit-testing fixtures yii yii2 codeception

我使用 Codeception 为 Yii2 应用程序编写了一个简单的测试。而不是使用真正的 MySQL 数据库,我想使用装置。

这是代码:

测试/PersonTest.php:

namespace app\tests\unit\models;

use tests\fixtures;
use app\controllers;

class PersonTest extends \Codeception\Test\Unit
{
    protected $tester;
    public $appConfig = '@app/config/main.php';

    protected function _before(){ }
    protected function _after(){ }

    public function _fixtures()
    {
        return [ 'Person' => fixtures\PersonFixture::className() ];
    }

    public function testUser(){
        $person = Person::findOne( [ "id" => 1 ] );
        $userId = isset( $person->id ) ? $person->id : false;
        $this->assertEquals( 1, $userId );
    }
}
Run Code Online (Sandbox Code Playgroud)

测试/夹具/数据/Person.php

return [
    'person1' => [
        'id'            => 1,
        'firstname'     => 'Foo',
        'lastname'      => 'Bar',

    ],
];
Run Code Online (Sandbox Code Playgroud)

测试/夹具/Person.php

namespace tests\fixtures;

use yii\test\ActiveFixture;

class PersonFixture extends ActiveFixture
{
    public $modelClass = 'app\models\Person';
}
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我只是收到错误:

[错误] 找不到类 'tests\fixtures\PersonFixture'

我尝试了 100 种不同的东西,但我无法让它发挥作用。如果这个简单的例子对我有用,我就可以创建真正的测试。

xRe*_*sal -1

您必须使用yii2-codeception可以自动加载灯具的扩展程序。

安装它后,您将拥有yii\codeception\DbTestCase可用的类,PersonTest应该扩展它。

人员固定装置应具有如下命名空间:app\tests\fixtures。

  • 请注意,yii2-codeception 扩展已弃用:https://github.com/yiisoft/yii2-codeception (5认同)