Yii:装置和设置()在单元测试中

时间:2013-06-05 09:34:08

标签: php yii phpunit fixtures

我希望有人可以帮助我。我安装并尝试使用phpunit。它运作良好,但现在我尝试使用灯具和setUp方法,它不起作用。

class RightGroupTest extends CDbTestCase {

    public $fixtures = array(
            'rights' => 'Right',
            'groups' => 'RightGroup',
    );

    public function setUp() {
            $group = new RightGroup($this->groups['group1']);
}

如果我执行上面的测试,我会收到一条错误消息:

例外:未知财产'群组' for class' RightGroupTest'。

但是如果我执行这个

class RightGroupTest extends CDbTestCase {

    public $fixtures = array(
            'rights' => 'Right',
            'groups' => 'RightGroup',
    );

    public function testIndex234() {

            $group = new RightGroup($this->groups['group1']);
}
一切正常。

还有第二个问题:

我有很多关系。例如,我可以创建组,每个组都有多个权限。有没有办法在灯具中创建一个包含多个正确对象的组? 我已经尝试过像这样的东西了

return array(
    'group1'=>array(
        'title'=>'Admin',
        'created'=>'2013-05-30',
        'updated'=>'2013-05-30',
        'rights' => array(
            $this->getRecord('right', 'right1'),
            $this->getRecord('right', 'right2'),
            $this->getRecord('right', 'right3'),
        ),
    ),
    'group2'=>array(
        'title'=>'User',
        'created'=>'2013-05-30',
        'updated'=>'2013-05-30',
    ),
);

2 个答案:

答案 0 :(得分:3)

CDbTestCase方法的setUp()中加载了灯具。因此,如果要覆盖此方法,则应首先调用父级:

public function setUp()
{
    parent::setUp();
    // use fixtures here
}

至于你的第二个问题:不,你必须为每个表创建一个单独的fixture文件。夹具系统无法管理相关记录。

答案 1 :(得分:0)

迈克尔已经回答了你的问题。另外,请注意创建Model对象,而不是使用:

$group = new RightGroup($this->groups['group1']);

你可以使用:

$group = $this->groups('group1');

注意圆括号而不是方括号。