【问题标题】:Yii: Fixtures And Setup() In Unit TestYii:单元测试中的 Fixtures 和 Setup()
【发布时间】:2013-05-31 22:41:08
【问题描述】:

我希望有人可以帮助我。我安装并尝试使用 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',
    ),
);

【问题讨论】:

    标签: php yii phpunit fixtures


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      你可以使用:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        • 2013-09-28
        • 2012-06-15
        • 2015-07-23
        • 2014-06-20
        • 2014-05-10
        • 1970-01-01
        相关资源
        最近更新 更多