2010-06-15 6 views
0

Я погружаюсь в мир модульных испытаний. И я вроде потерял. Сегодня я узнал, что модульное тестирование тестируется, если функция работает.О модульном тестировании функции в каркасе zend и модульном тестировании вообще

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

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 по-другому. Но я не понимаю, как это сделать. Что это за функция, это просто cals ресурс и возвращает событие по id.

ответ

3

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

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

некоторых Учебников:

Zend Developer Zone

PHP Unit Slideshow

Pragmatic Unit Testing (Заметим, что это для C#, но понятия должны быть одинаковыми)

DevShed

+0

Спасибо за всю информацию. Мне нужно так много читать! – sanders