Yii单元测试在测试中无法访问的灯具

Tak*_*eko 2 php phpunit unit-testing yii

配置/ test.php的

'components'=>array(
    'fixture'=>array(
        'class'=>'system.test.CDbFxtureManager'
    ),
),
Run Code Online (Sandbox Code Playgroud)

tests/unit/EntityTest.php(扩展CDbTestCase)

public $fixtures = array('entities'=>'Entity'),
Run Code Online (Sandbox Code Playgroud)

测试/夹具/ Entity.php

return array(
    'entity1'=>array('slug'=>'slug1', 'title'=>'title1'),
    'entity2'=>array('slug'=>'slug2', 'title'=>'title2'),
);
Run Code Online (Sandbox Code Playgroud)

现在,在EntityTest类中,我尝试获取我的实体

$entities = $this->entities;
$entity = $this->entities('entity1');
Run Code Online (Sandbox Code Playgroud)

输出是'Unknown property'实体"for class"EntityTest"'.测试类是'Entity',数据库中的表名是'tbl_entity','tablebrefix'选项'CDbConnection'组件设置为'tbl_'

hij*_*ian 5

我们去尸体吧!:)

您的问题是在灯具中命名文件.你提到它是a tests/fixtures/Entity.php,它应该在你的Model,class之后,但事实上,文件fixtures夹中的文件应该以tableName你的模型的名字命名.我相信你的Entity模型的真实表名是entity(全部为小写),所以只需重命名该文件.我有几次类似的问题,解决方案在文档中清楚地说明:"一个fixture表示为一个PHP脚本,其名称(没有后缀)与表名相同(如果需要模式名称,它应该是前缀为表名.)"