У меня есть метод, отправляющий HTTPRequest:
public String myMethod(String url) throws IOException, InterruptedException, HttpTimeoutException {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("accept", "application/json")
.method("GET", HttpRequest.BodyPublishers.noBody())
.timeout(Duration.ofSeconds(3))
.build();
HttpResponse response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
return response.body();
}
Я пытаюсь имитировать метод send Чтобы создать тест для этого метода.
Я просто пока не нашел, как имитировать HttpClient.newHttpClient().
Это одна из версий для теста (не работает)
void checkGetEarningRulesByTypeReturnGoodValues() throws IOException, InterruptedException {
String expectedRes = "...";
HttpClient httpClient = mock(HttpClient.class);
HttpResponse httpResponse = mock(HttpResponse.class);
when(httpResponse.body()).thenReturn(expectedRes);
when(httpClient.send(any(), any())).thenReturn(httpResponse);
when(HttpClient.newHttpClient()).thenReturn(httpClient);
String res = MyClass.myMethod(url);
assertEquals(res, expectedRes);
Подробнее здесь: https://stackoverflow.com/questions/761 ... th-mockito