Макет веб-сервиса
Я бы написал оболочку для вызовов к веб-сервису в приложении.
Пример в псевдокоде
CallWebService (action, options,...) {
// Code for connectiong to Webservice
}
Тогда вы просто высмеиваете эту функцию, просто как любую другую функцию
CallWebService (action, options,...) {
return true;
}
Таким образом, вы можете издеваться над веб-сервисом, не беспокоясь о том, что он является веб-сервисом, подключением к базе данных или чем-то еще. И вы можете заставить его вернуть значение true или что-то еще.
Проверьте, как ваш код обрабатывает ответы от веб-службы
Чтобы продвинуть эту идею на шаг вперед и сделать ваши тесты еще более мощными, вы могли бы использовать какие-либо параметры тестирования или параметры среды для управления тем, что происходит в методе фиктивного веб-сервиса. Затем вы можете успешно проверить, как ваши коды обрабатывают различные ответы от веб-сервисов.
Опять в псевдокоде:
CallWebService (action, options,...) {
if TEST_WEBSERVICE_PARAMETER == CORRUPT_XML
return "<xml><</xmy>";
else if TEST_WEBSERVICE_PARAMETER == TIME_OUT
return wait(5000);
else if TEST_WEBSERVICE_PARAMETER == EMPTY_XML
return "";
else if TEST_WEBSERVICE_PARAMETER == REALLY_LONG_XML_RESPONSE
return generate_xml_response(1000000);
}
И соответствующие тесты:
should_raise_error_on_empty_xml_response_from_webservice() {
TEST_WEBSERVICE_PARAMETER = EMPTY_XML;
CallWebService(action, option, ...);
assert_error_was_raised(EMPTY_RESPONSE_FROM_WEBSERVICE);
assert_written_in_log(EMPTY_RESPONSE_LOG_MESSAGE);
}
...
И так, вы поняли.
Обратите внимание, что, хотя все мои примеры - это тесты с отрицательным тестом, это, конечно, можно использовать и для тестирования тестов с положительным тестом.
Обратите внимание, что это копия ответа, который я сделал на подобные вопросы:
Макет веб-сервиса для iPhone
Удачи