我使用Codreceive为我的Yii 2应用程序编写了一个简单的测试。我不想使用真实的的MySQL数据库,而想使用fixture。
下面是代码:
- 测试/个人测试.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 );
}
}
- 测试/夹具/数据/人员.php*
return [
'person1' => [
'id' => 1,
'firstname' => 'Foo',
'lastname' => 'Bar',
],
];
- 测试/夹具/人员.php*
namespace tests\fixtures;
use yii\test\ActiveFixture;
class PersonFixture extends ActiveFixture
{
public $modelClass = 'app\models\Person';
}
当我运行测试时,我只得到错误:
[错误]找不到类别'tests\fixture\PersonFixture'
我尝试了100种不同的方法,但是我不能让它工作。如果这个简单的例子对我有用,我可以创建真实的的测试。
4条答案
按热度按时间hjqgdpho1#
使用Codreceive 2.3.8,您可以这样做:
定义您的固定装置(并拥有与您的问题中一样的数据文件)
写你的测试
就这样了。
oo7oh9g92#
35g0bw713#
您必须将夹具文件名从
Person.php
更改为PersonFixture.php
,它将开始工作。relj7zay4#
你必须使用
yii2-codeception
扩展,它会为你自动加载夹具。安装后,您将拥有
yii\codeception\DbTestCase
类,PersonTest
应该扩展它。Person固定装置应具有如下命名空间:
app\tests\fixtures
.