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);