О модульном тестировании функции в Zend Framework и модульном тестировании в целом - PullRequest
0 голосов
/ 15 июня 2010

Я погружаюсь в мир юнит-тестирования. И я в некотором роде потерян. Сегодня я узнал, что модульное тестирование - это проверка работоспособности функции.

Я хотел проверить следующую функцию:

public function getEventById($id)
{
    return $this->getResource('Event')->getEventById($id);
}

Итак, я хотел проверить эту функцию следующим образом:

public function test_Event_Get_Event_By_Id_Returns_Event_Item()
{
    $p = $this->_model->getEventById(42);
    $this->assertEquals(42, EventManager_Resource_Event_Item_Interface);
    $this->assertType('EventManager_Resource_Event_Item_Interface', $p);
}

Но тогда я получил ошибку:

1) EventTest::test_Event_Get_Event_By_Id_Returns_Event_Item
Zend_Db_Table_Exception: No adapter found for EventManager_Resource_Event

/home/user/Public/ZendFramework-1.10.1/library/SF/Model/Abstract.php:101
/var/www/nrka2/application/modules/eventManager/models/Event.php:25

Но потом кто-то сказал мне, что в настоящее время я занимаюсь модульным тестированием, а не тестом интеграции. Поэтому я решил, что мне нужно протестировать функцию getEventById по-другому. Но я не понимаю как. Что эта функция делает, она просто вызывает ресурс и возвращает событие по id.

1 Ответ

3 голосов
/ 15 июня 2010

Ну, один из способов - перегрузка тестируемого объекта.Затем вы можете переопределить метод getResource (), чтобы вернуть объект «Mock» (объект, который всегда ведет себя детерминистически и который можно «настроить» для каждого теста).Хитрость заключается в том, чтобы изолировать функциональность, которую вы хотите протестировать, и удалить все зависимости, которые могут помешать (метод getResource в вашем случае) ...

Я бы порекомендовал прочитать некоторые учебники (не только один, несколько), и пытается понять философию, а также методологию ...

Некоторые учебные пособия:

Zend Developer Zone

PHP Unit Slideshow

Прагматическое модульное тестирование (Обратите внимание, это для C #, но концепции должны быть одинаковыми)

DevShed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...