Как написать тестовый блок для Zend Db Table Row - PullRequest
2 голосов
/ 29 августа 2011

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

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

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

Мои классы строк расширены от Zend_Db_Table_Row, я не думаю, что необходимо писать тестовые примеры, такие как getter & setters.

И большинство моих классов строк выглядят следующим образом:

class App_Table_Row_User extends Zend_Db_Table_Row_Abstract {

}

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

1 Ответ

3 голосов
/ 26 октября 2011

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

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

  • таблица
  • данные
  • 1010 * хранить *
  • 1012 * доступен только для чтения *

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

   $this->object = new App_Table_Row_User(     
     array(
       'data' => array(  
         'username' => 'Jon Doe',  
         'password' => 'qwerty',  
         'email' => 'j.doe@example.com'  
       )
     ) 
   );

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

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

...