Я пишу приложение для Android, которому иногда требуется запрашивать данные через HTTP из REST API. Я использую Apache DefaultHttpClient для выполнения запросов. Есть ли способ написать тесты для этого приложения и «заменить» ответ DefaultHttpClient при запуске тестов, чтобы результаты тестов всегда были согласованы?
В качестве примера того, что я хотел бы проверить, один из веб-сервисов, к которым я обращаюсь, берет строку и выполняет текстовый поиск, возвращая постраничный список объектов. Мне нужно проверить случаи, когда список пуст, список помещается на первой странице или список больше страницы, и приложение должно сделать несколько запросов, чтобы получить полный список.
Я не являюсь разработчиком этого веб-API и не могу изменять его ответы, поэтому я не могу изменить то, что он возвращает. В приведенном выше примере, если я хочу проверить случай, когда возвращаемый список пуст, я мог бы просто найти строку, которая, я уверен, не даст никаких результатов, но два других случая сложнее, потому что служба может возврат всегда меняется.
Я думаю, что в идеале у меня был бы способ получить модифицированный DefaultHttpClient при запуске тестов, который возвращает жестко запрограммированный результат для запросов к заданному URL-адресу вместо того, чтобы фактически выполнять сетевой запрос. Таким образом, я всегда получал бы последовательные результаты независимо от ответа реального веб-сервиса.
В настоящее время я использую Robotium для тестирования, но я открыт и для других инструментов.