Мой совет - использовать MockWebServer от okhttp для такого рода тестовых примеров.
MockWebserver может быть создан для каждого теста и позволит вам создать URL-адрес веб-службы, который будет использоваться вашей тестируемой реализацией для отправьте реальный http-запрос против него.
Перед этим вы можете определить ложный ответ, который будет возвращен mockwebserver вашей реализации.
Я не знаю ваш тестовый пример, но это Фрагмент должен прояснить, как работает MockWebServer.
Дополнительные примеры и полный документ можно найти на их репозитории github .
Как вы можете видеть ниже, вы можете сделать пару утверждений, например. если был использован правильный метод запроса, сколько запросов было сгенерировано и были ли использованы правильные параметры и тело запроса во время запроса.
@ExtendWith(VertxExtension.class)
@Slf4j
public class WebServiceTest {
private WebServiceRequester sut;
private MockWebServer mockWebServer;
@BeforeEach
public void setUp() {
sut = new WebServiceRequester();
mockWebServer = new MockWebServer();
}
@Test
public void testCallService(final Vertx vertx, final VertxTestContext testContext) throws InterruptedException {
// given
final JsonObject requestPayload = new JsonObject().put("requestData", new JsonArray("[]"));
final JsonObject serverResponsePayload = new JsonObject().put("responseData", new JsonArray("[]"));
mockWebServer.enqueue(new MockResponse()
.setBody(serverResponsePayload.encode())
.setResponseCode(200)
.setHeader("content-type", "application/json"));
// when
final String webServiceUrl = mockWebServer.url("/").toString();
final Promise<String> stringPromise =
sut.callService(
webServiceUrl,
requestPayload,
vertx);
// then
final RecordedRequest recordedRequest = mockWebServer.takeRequest();
assertEquals("POST", recordedRequest.getMethod());
assertEquals("[text={\"request\":[]}]", recordedRequest.getBody().toString());
assertEquals(1, mockWebServer.getRequestCount());
testContext.assertComplete(stringPromise.future())
.map(val -> {
assertEquals("promise_completed", val);
testContext.completeNow();
return val;
})
.onComplete(onComplete -> {
assertTrue(onComplete.succeeded());
log.info("done");
})
.onFailure(onError -> Assertions.fail());
}
}