okhttp の Mockwebserver で、複数リクエストに対応する

okhhtp3 Mockwebserver の使い方の問題ですが、
Mockwebserver 1回の enqueue(MockResponse response) メソッドの設定だけでは、
2回リクエストを実行すると2回目は応答しなくなる。
解決方法は2通り。

enqueue レスポンス設定をリクエストの回数分実行しておく

これはテストする HttpClient の実行回数に合わせてenqueue 実行を並べる。

MockWebServer server = new MockWebServer();
// 3回リクエストに対応
IntStream.rangeClosed(1, 3).boxed().forEach(i->{
    server.enqueue(new MockResponse().addHeader("Content-Type", "application/json; " + "charset=utf-8")
    .setBody("{ \"status\":\"OK\", \"count\":" + i + " }").setResponseCode(200));
});
try{  server.start(); }catch(IOException e){ }
// TODO HttpClient 実行テスト3回
// 終わったら server.shutdown(); を忘れずに。
Dispatcher を使う

okhttp3.mockwebserver.Dispatcher をインポートしてこの抽象クラスを
実装化して MockWebServer にディスパッチャーとして登録する。
これは、リクエストによって返却する MockResponse を変更できるのでリクエストのテストケースに
対応することが可能である。

MockWebServer server = new MockWebServer();
Dispatcher dispatcher = new Dispatcher() {
    @Override
    public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
        if (request.getPath().equals("/v1/login/auth/")){
            return new MockResponse().addHeader("Content-Type", "application/json; " + "charset=utf-8")
                .setBody("{ \"auth status\":\"OK\" }").setResponseCode(200);
        }else if(request.getPath().equals("/v1/check/version/")){
            return new MockResponse().addHeader("Content-Type", "application/json; " + "charset=utf-8")
                .setBody("{ \"check status\":\"OK\" }").setResponseCode(200);
        }else if(request.getPath().equals("/v1/profile/info/")){
            return new MockResponse().addHeader("Content-Type", "application/json; " + "charset=utf-8")
                .setBody("{ \"info\":\"ABCD\" }").setResponseCode(200);
        }
        return new MockResponse().setResponseCode(404);
    }
};
server.setDispatcher(dispatcher);
try{  server.start(); }catch(IOException e){ }
// TODO HttpClient 実行テスト
// 終わったら server.shutdown(); を忘れずに。

リクエストが期待どおりでなければ、return new MockResponse().setResponseCode(404);
を実行している。
HttpClient にセットする MockwebServer に向けるために、
HttpClient のURLは以下で生成する String から作成するようにする。

String path = server.url("/v1/login/auth/").toString();
// これを、HttpRequest.newBuilder().uri メソッドに渡す URI 作成、URI.create(path) とする