mockserver->返回自定义对象响应

332nm8kg  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(351)

我正在尝试从mockserver返回自定义对象响应。
在客户端,我希望得到的响应是“getchannelsresponse”。

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

以下是模型对象:

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

我试图模拟响应并将自定义对象响应返回为。
我试过以下代码:

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并在body中传递a对象。
但在客户端,如上所示,我希望作为一个。
请提出一些实现它的建议

nnsrf1az

nnsrf1az1#

加载项返回响应为withcontenttype为mediatype.application\u json

return response()
                                        .withBody(
                                              new ObjectMapper().writeValueAsString(a)
                                        )
                                        .withStatusCode(200)
                                        .withContentType(MediaType.APPLICATION_JSON);

相关问题