Mock ответов сервера в Android разработке при помощи Interceptor

Roman Kryvolapov
1 min readJun 29, 2022

Всем привет)

Думаю многие разработчики сталкивались с ситуацией, когда какой то из эндпоинтов сервера не готов, но его нужно добавить в приложение. Особенно часто такое бывает с негативными кейсами вроде всевозможных ошибок, которые нужно обрабатывать в приложении, и которые часто делаются в последнюю очередь.

Способов решения в данном случае много, можно например подставлять данные на разных этапах их обработки или использовать OkHttp MockWebServer
https://github.com/square/okhttp/tree/master/mockwebserver
или подобные решения.

Подумав над возможными способами, я решил сделать interceptor, чтобы менять ответ сервера на самом раннем этапе из возможных. А нем используется map, в которой по ключу в виде HttpUrl лежит упрощенная модель ответа сервера, далее из chain вытаскивается url, и если он есть в map, вытаскивается модель ответа и подставляются данные из нее. Я не стал добавлять headers, но это можно очень просто сделать, как и добавить сколько угодно ответов по разным url. Теоретически можно отслеживать не только url, но и какие то другие параметры. Вот что в итоге получилось:

а далее в OkHttpClient.Builder просто добавляем

if (IS_MOCK_INTERCEPTOR_ENABLED) {
addInterceptor(MockInterceptor())
}

Надеюсь кому то будет полезно.

--

--