Я хотел бы написать модульные тесты для моих конечных точек, когда конечная точка вызывает другое приложение.До сих пор я мог проверить, имеет ли Invocation правильный URI или тип метода, но я хотел бы смоделировать ответ.
public Response getFormById(Integer formId) {
Invocation invocation = prepareRequestForGettingForm(formId);
Response response = invocation.invoke();
return response;
}
public Invocation prepareRequestForGettingForm(Integer formId) {
return ClientBuilder
.newClient()
.register(authenticator)
.target("localhost:8080" + "/form" + formId)
.request(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.build("get");
}
TEST:
@Test
public void request_getFormById_shouldContainsProperEndpointAddress() {
String expectedUri = expectedUriBase + formId;
Invocation invocation = mock.prepareRequestForGettingForm(formId);
String uri = ((ClientInvocation) invocation).getUri().toString();
assertEquals(uri, expectedUri);
when(invocation.invoke()).thenReturn(Response.ok().build());
Response response = formServiceBean.getFormById(formId);
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
}
Когда я пытаюсь смоделировать вызов.invoke тогда у меня ошибка:
javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request
at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:317)
Так может кто-нибудь сказать мне, как это издеваться?
Есть ли шанс также использовать Rest-Assure, но сделать ли это разумно, чтобы позже использовать Code Coverage?