Выбор ответа Middle Тестирование обновлено
Тестирование сетевого слоя
Вопрос
Как проверить, что Retrofit-клиент правильно парсит ответ сервера и обрабатывает 500?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Поднять MockWebServer, задать ответы и направить на него настоящий Retrofit. MockWebServer это локальный HTTP-сервер в тесте: ему отдают заготовленные ответы (MockResponse с телом и кодом), а Retrofit работает по-настоящему, поэтому проверяются аннотации, сериализация, заголовки и обработка ошибок.
Варианты ответа
- Мокать интерфейс Retrofit через MockK и возвращать готовые DTO из каждого метода
- Поднять
MockWebServer, задать ответы и направить на него настоящий Retrofitправильный ответ - Делать запросы к боевому серверу на тестовом аккаунте в ночном прогоне CI
- Проверить в UI-тесте, где видно, как ошибка 500 отобразилась на экране
Разбор
MockWebServer это локальный HTTP-сервер в тесте: ему отдают заготовленные ответы (MockResponse с телом и кодом), а Retrofit работает по-настоящему, поэтому проверяются аннотации, сериализация, заголовки и обработка ошибок. Мок интерфейса Retrofit не проверит ни парсинг, ни HTTP. Боевой сервер делает тесты нестабильными.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.