Как написать сценарий модульного тестирования для Zend Db Table Row

Я пытаюсь написать тестовый пример для своих классов Row, и я действительно не знаю, как это сделать правильно.

Я видел много примеров использования модели и таблицы, например http://techportal.inviqa.com/2010/12/07/unit-testing-databases-with-zend-framework/.

В этом случае Row вообще не используется, а модель основана на геттерах и сеттерах. Я не хочу переписывать такие вещи, поскольку Zend_Db_Table_Row может делать это автоматически.

Мои классы строк расширены из Zend_Db_Table_Row, я не думаю, что нужно писать тестовые примеры, такие как геттеры и сеттеры.

И большинство моих классов строк похожи на следующие

class App_Table_Row_User extends Zend_Db_Table_Row_Abstract {

}

Затем, чтобы получить лучшее покрытие тестовых случаев, какой тестовый пример я должен написать для класса, как указано выше?


person rainmore    schedule 29.08.2011    source источник


Ответы (1)


Я предполагаю, что вам нужно заполнить атрибуты объекта (имя столбца таблицы => значения) и запустить тесты для ваших пользовательских методов.

Конструктор Zend_Db_Table_Row_Abstract имеет один параметр - ассоциативный массив со следующими ключами:

  • Таблица
  • данные
  • хранится
  • только для чтения

Чтобы построить полезный для тестирования объект, вы должны использовать как минимум записи «данные». Это тоже ассоциативный массив. Массив data содержит имена столбцов в качестве ключей и данные строк в качестве значений. Таким образом, setUp объекта тестирования может выглядеть следующим образом:

   $this->object = new App_Table_Row_User(     
     array(
       'data' => array(  
         'username' => 'Jon Doe',  
         'password' => 'qwerty',  
         'email' => '[email protected]'  
       )
     ) 
   );

Вы можете передать NULL в качестве значений в записях массива "data", если вам нужно что-то похожее на возвращаемый объект fetchNew.
Если вы используете "save" или любой другой метод, требующий табличной модели, я предлагаю использовать mock/stub объект и передать его как параметр «таблица» в конструкторе. Таким образом вы можете управлять любой операцией, связанной с БД.

Надеюсь, это поможет :)

person Sve    schedule 25.10.2011