0

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

class RightGroupTest extends CDbTestCase {

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

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

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

例外:类“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',
    ),
);
4

2 回答 2

3

夹具被加载CDbTestCasesetUp()方法中。所以如果你想重写这个方法,你应该先调用父级:

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

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

于 2013-06-05T13:32:21.693 回答
0

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

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

您可以使用:

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

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

于 2015-06-25T08:42:44.477 回答