MockWebServer ставится в очередь по условию пути?

Я использую MockWebServer из okhttp3, чтобы протестировать свой веб-клиент на внешнем веб-сервере.

Я хочу настроить макет так, чтобы ответы возвращались условно по пути.

Как псевдокод:

mockWebServer.expectPath("/products")
             .enqueue(new MockResponse().setBody(..))
             .expectPath("/items")
             .enqueue(new MockResponse().setBody(..));

Это возможно?


person membersound    schedule 25.07.2019    source источник


Ответы (1)


Да, это возможно. У меня была аналогичная проблема, и в итоге я написал небольшую библиотеку Android с открытым исходным кодом поверх MockWebServer, чтобы максимально упростить ее: Мокинизатор

В вашем случае настройка OkHttpClient будет выглядеть примерно так:

val mocks: Map<RequestFilter, MockResponse> = mapOf(

    RequestFilter("/products") to MockResponse().apply {
        setBody("..")
    },

    RequestFilter("/items") to MockResponse().apply {
        setBody("..")
    }

)

OkHttpClient.Builder()
        .addInterceptor(loggingInterceptor)
        .mockinize(mocks) // <-- just plug in your custom mocks here
        .build()

Вы просто подключаете моки к OkHttpClient. Вам не нужно беспокоиться о настройке mockWebServer самостоятельно. Mockinizer сделает это автоматически за вас ;-)

person donfuxx    schedule 07.08.2019