2013-06-05 37 views
0

我希望有人能幫助我。我安裝並嘗試使用phpunit。它工作得很好,但現在我試圖使用燈具和setUp方法,它不起作用。Yii:燈具和設置()在單元測試

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']); 
} 

一切正常。

第二個問題:

我有一個多對多的關係。例如,我可以創建組,每個組都有幾個權限。有沒有辦法在夾具中創建一個包含多個正確對象的組? 我已經嘗試過soomething這樣

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', 
    ), 
); 

回答

3

照明燈在各setUp()方法加載CDbTestCase。所以,如果你想重寫此方法應該調用父類第一:

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

至於你的第二個問題:不,你必須創建爲每個表單獨的固定文件。夾具系統無法管理相關記錄。

+0

非常感謝。它解決了我的問題。 – EvilKarter

0

Michael已經回答了您的問題。此外,注意,要創造而不是使用一個模型對象,:

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

你可以使用:

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

通知圓括號,而不是方括號。