Модульное тестирование для REST с клиентом и вызовом - PullRequest
0 голосов
/ 26 ноября 2018

Я хотел бы написать модульные тесты для моих конечных точек, когда конечная точка вызывает другое приложение.До сих пор я мог проверить, имеет ли 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?

...