Макет веб-сервиса
Я бы написал оболочку для вызовов веб-службы в приложении.
Пример в псевдокоде
CallWebService (action, options,...) {
// Code for connectiong to Webservice
}
Затем вы просто издеваетесь над этой функцией, просто вам нужна любая другая функция
CallWebService (action, options,...) {
return true;
}
Таким образом, вы можете издеваться над веб-службой, не беспокоясь о том, что это веб-служба, соединение с базой данных или что-то еще. И вы можете вернуть его true или что-то еще.
Проверьте, как ваш код обрабатывает ответы от веб-службы
Чтобы продвинуть эту идею еще на один шаг вперед и сделать ваши тесты еще более мощными, вы можете использовать какие-то параметры теста или параметры среды для управления тем, что происходит в методе mocked off webservice. Затем вы можете успешно протестировать, как ваши коды обрабатывают различные ответы веб-сервисов.
Снова в псевдокоде:
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);
}
...
И так далее, вы поняли.
Обратите внимание, хотя все мои примеры являются отрицательными тестовыми наборами, их, конечно же, можно использовать и для тестирования положительных тестовых случаев.
Обратите внимание, что это копия ответа, который я дал на похожие вопросы: Mockup webservice for iPhone
Удачи
person
Jonas Söderström
schedule
20.08.2010