配置/ test.php的
'components'=>array(
'fixture'=>array(
'class'=>'system.test.CDbFxtureManager'
),
),
tests / unit / EntityTest.php(扩展CDbTestCase)
public $fixtures = array('entities'=>'Entity'),
测试/装置/ Entity.php
return array(
'entity1'=>array('slug'=>'slug1', 'title'=>'title1'),
'entity2'=>array('slug'=>'slug2', 'title'=>'title2'),
);
现在,在EntityTest类中,我尝试获取实体
$entities = $this->entities;
$entity = $this->entities('entity1');
输出为“未知属性”实体“用于类”EntityTest“'。测试类是'Entity',数据库中的表名是'tbl_entity','tablebrefix'选项'CDbConnection'组件设置为'tbl _'
答案 0 :(得分:5)
我们去尸体吧! :)
您的问题是在灯具中命名文件。你提到它是tests/fixtures/Entity.php
,它应该在你的 Model 类的名字后面,但事实上,fixtures
文件夹中的文件应该以{{1}命名你的模特。我相信您的tableName
模型的真实表名是Entity
(全部为小写),因此只需重命名该文件即可。我有过几次类似的问题,解决方案在文档中明确说明:"A fixture is represented as a PHP script whose name (without suffix) is the same as the table name (if schema name is needed, it should be prefixed to the table name)."
答案 1 :(得分:2)
同时尝试this if you are using setUp() method。当你用自己的方法重新定义它时,只需调用parent :: setUp()。
答案 2 :(得分:1)
$entity = $this->entities['entity1']; // returns an array
$entity = $this->entities('entity1'); // returns an active record
答案 3 :(得分:0)
看看这个解决方案Yii Fixtures Issue?我也提出了同样的问题。我忽略了要扩展的类,确保扩展CDbTestCase。