Выбор ответа Middle Тестирование обновлено

Тестирование сетевого слоя

Вопрос

Как проверить, что Retrofit-клиент правильно парсит ответ сервера и обрабатывает 500?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Поднять MockWebServer, задать ответы и направить на него настоящий Retrofit. MockWebServer это локальный HTTP-сервер в тесте: ему отдают заготовленные ответы (MockResponse с телом и кодом), а Retrofit работает по-настоящему, поэтому проверяются аннотации, сериализация, заголовки и обработка ошибок.

Варианты ответа

  1. Мокать интерфейс Retrofit через MockK и возвращать готовые DTO из каждого метода
  2. Поднять MockWebServer, задать ответы и направить на него настоящий Retrofitправильный ответ
  3. Делать запросы к боевому серверу на тестовом аккаунте в ночном прогоне CI
  4. Проверить в UI-тесте, где видно, как ошибка 500 отобразилась на экране

Разбор

MockWebServer это локальный HTTP-сервер в тесте: ему отдают заготовленные ответы (MockResponse с телом и кодом), а Retrofit работает по-настоящему, поэтому проверяются аннотации, сериализация, заголовки и обработка ошибок. Мок интерфейса Retrofit не проверит ни парсинг, ни HTTP. Боевой сервер делает тесты нестабильными.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.