okhttp の MockWebServer で指定する Dispatcher でリクエストカウントを参照

oboe2uran.hatenablog.com

void okhttp3.mockwebserver.MockWebServer.enqueue(@NotNull MockResponse response)
は、キューとして応答レスポンスを登録するので返す順番にこれを呼べばよかった。

Dispatcher の方法で、リクエストカウントを判断したい
MockWebServer の getRequestCount() メソッドで、1始まりのカウントを取得できる。

特に高度なテクニックなコードではない。単純に生成する MockWebServer を Dispatcher 内で使うだけ。

MockWebServer server = new MockWebServer();
Dispatcher dispatcher = new Dispatcher() {
    @Override
    public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
        int requestCount = server.getRequestCount();
        // TODO リクエスト回数による応答をするようにする → editBody(requestCount)
        return new MockResponse().addHeader("Content-Type", "application/json; " + "charset=utf-8")
            .setBody( editBody(requestCount)  ).setResponseCode(200);
    }
};
server.setDispatcher(dispatcher);