2013-06-05 2 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

Светильники загружаются в CDbTestCase в методе setUp(). Так что если вы хотите, чтобы переопределить этот метод, вы должны назвать родительской первым:

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

Что касается вашего второго вопроса: Нет, вы должны создать отдельный файл арматуры для каждой таблицы. Система крепления не может управлять связанными записями.

+0

спасибо. Это решило мою проблему. – EvilKarter

0

Майкл уже ответил на ваш вопрос. Кроме того, обратите внимание, что для создания объекта модели, вместо использования:

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

вы можете использовать:

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

Обратите внимание на круглые скобки вместо квадратных скобок.

Смежные вопросы