MockServer -> Вернуть ответ пользовательского объекта

Я пытаюсь вернуть ответ пользовательского объекта от mockserver.

На стороне клиента я ожидаю получить ответ «GetChannelsResponse».

       ResponseEntity<A> response = restTemplate.exchange(url, HttpMethod.GET, request, A.class);

Вот объект модели A:

      public class A{
    private String resultCode;
    private String errorCode;
    private String errorDescription;
    private Integer totalResults;
    private List<B> b= new ArrayList();
}

Я пытаюсь издеваться над ответом и возвращать ответ пользовательского объекта как A.

Я пробовал ниже код:

      mockServer.when(
                request()
                        .withPath("/[a-z]+/[a-z]+/[0-9]+")
        )
                .respond(
                        httpRequest -> {
                            String method = httpRequest.getMethod().getValue();
                            String path = httpRequest.getPath().getValue();
                            Integer id = Integer.valueOf(getIdFromPath(path));

                            if (method.equals("GET")) { 
                                Channel channel = map.get(id);
                                A a= getOkGetResponse(Arrays.asList(channel));
                                if (channel != null) {
                                    return response()
                                            .withBody(
                                                    new ObjectMapper()
                                                            .writeValueAsString(
                                                                    channelsResponse
                                                            )
                                            )
                                            .withStatusCode(200);
}


private static A getOkGetResponse(List<Channel> channels) {
    A getResponse = new A();
    getResponse.setResultCode(HttpStatus.OK.name());
    getResponse.setTotalResults(channels.size());
    getResponse.setChannels(channels);

    return getResponse;
}

Но похоже, что mockserver возвращает в качестве ответа только HttpResponse, а не пользовательские объекты. В приведенном выше коде он возвращает httpresponse, а в теле передает объект A.

Но в клиенте, как показано выше, я ожидаю ответа как A.

Пожалуйста, suugest некоторые предложения для достижения этого

1 ответ

Добавьте в ответ ответ как withcontenttype как MediaType.APPLICATION_JSON

                                   return response()
                                        .withBody(
                                              new ObjectMapper().writeValueAsString(a)
                                        )
                                        .withStatusCode(200)
                                        .withContentType(MediaType.APPLICATION_JSON);
Другие вопросы по тегам