как издеваться над ответом okhttp для теста JUnit

Я делаю исходящий HTTP-запрос к стороннему API через okhttp:

public @Nullable result Call3rdParty {
    OkHttpClient client = new OkHttpClient.Builder()
        .connectTimeout(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS)
        .readTimeout(RW_TIMEOUT, TimeUnit.MILLISECONDS)
        .retryOnConnectionFailure(true)
        .build();
    

    Request request = new Request.Builder()
       .url(url)
       .build();
    Response response = client.newCall(request).execute();

    //Deserialize and do minor data manipulation...
}

Я хочу создать модульный тест и высмеять ответы.

  private MockWebServer server;

  @Before
  public void setUp() throws IOException {
    this.server = new MockWebServer();
    this.server.start();
  }

  @After
  public void tearDown() throws IOException {
    this.server.shutdown();
  }

  @Test
  public void Test_SUCCESS() throws Exception {
    String json = readFileAsString(file);
    this.server.enqueue(new MockResponse().setResponseCode(200).setBody(json));
    //TODO: What to do here??
   }

После того, как фиктивный ответ был поставлен в очередь, что мне нужно сделать, чтобы вернуть фиктивный ответ и использовать его в оставшейся части метода, который я тестирую?


person Bryan    schedule 30.09.2020    source источник
comment
Код в вопросе неполный, и на него есть ответы в сотнях онлайн-руководств и т. Д.   -  person Yuri Schimke    schedule 01.10.2020
comment
@YuriSchimke, упомяните, пожалуйста, одну из них для справки.   -  person Asad Shakeel    schedule 06.06.2021
comment
Случайный, трудно понять, какой из них лучший. Есть много разных способов реализации или целей этого тестирования medium.com/android-news/   -  person Yuri Schimke    schedule 07.06.2021


Ответы (1)


Проектная документация охватывает это

https://github.com/square/okhttp/tree/master/mockwebserver

  // Ask the server for its URL. You'll need this to make HTTP requests.
  HttpUrl url = server.url("/myendpoint");

  // Call your client code here, passing the server location to it
  response = Call3rdParty(url)
person Yuri Schimke    schedule 01.10.2020