12

MockWebServer によるネットワーク通信をシミュレートしたいと考えています。残念ながら、レトロフィットのコールバックは決して呼び出しません。私のコード:

    MockWebServer server = new MockWebServer();
    server.enqueue(new MockResponse().setResponseCode(200).setBody("{}"));
    server.play();

    RestAdapter restAdapter = new RestAdapter.Builder().setConverter(new MyGsonConverter(new Gson()))
            .setEndpoint(server.getUrl("/").toString()).build();

    restAdapter.create(SearchService.class).getCount(StringUtils.EMPTY,
            new Callback<CountContainer>() {

                @Override
                public void success(CountContainer countContainer, Response response) {
                    System.out.println("success");
                }

                @Override
                public void failure(RetrofitError error) {
                    System.out.println("error");
                }
            });

    server.shutdown();

コールバックなしでレトロフィットを使用すると機能します。

4

3 に答える 3

1

あるいは、MockWebServer で Mockinizer を使用することもできます。

OkHttpClient.Builder()
        .addInterceptor(loggingInterceptor)
        .mockinize(mocks) // <-- just add this line
        .build()

そして、モックしたいリクエスト/レスポンスをmocks値で定義できます。あなたの場合、次のようになります。

package com.appham.mockinizer.demo

import com.appham.mockinizer.RequestFilter
import okhttp3.mockwebserver.MockResponse

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

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

)

https://github.com/donfuxx/Mockinizerを参照してください

于 2019-08-05T21:31:11.310 に答える