Java 如何模拟rest模板

Java 如何模拟rest模板,java,spring,spring-boot,Java,Spring,Spring Boot,我已经设置了一个restemplate,从url收集数据 我的要求是测试这段代码,更重要的是测试序列化程序,因此给定一段JSON,我如何测试所有值是否正确地传递到商家实例 我不知道RestTemplate使用哪个序列化程序将JSON序列化为对象 RestTemplate template = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATI

我已经设置了一个
restemplate
,从url收集数据

我的要求是测试这段代码,更重要的是测试序列化程序,因此给定一段JSON,我如何测试所有值是否正确地传递到商家实例

我不知道RestTemplate使用哪个序列化程序将JSON序列化为对象

RestTemplate template = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> request = new HttpEntity<>("", headers);
ResponseEntity<InboundMerchants> result = template.exchange(
        String.format("%s%s", uri, url),
        HttpMethod.GET,
        request,
        InboundMerchants.class);

InboundMerchants merchants = result.getBody();
return merchants == null
        ? Lists.newArrayList()
        : merchants.getMerchants();
RestTemplate=new RestTemplate();
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity请求=新的HttpEntity(“,标头);
ResponseEntity结果=template.exchange(
格式(“%s%s”,uri,url),
HttpMethod.GET,
要求
类);
InboundMerchants=result.getBody();
返回值==null
? Lists.newArrayList()
:comments.getcomments();

对于单元测试,如果您使用的是Spring,则可以使用Mockito,请查看本教程:

对于集成测试(我认为是您的需求),您可以同时使用RestTemplate和MockMvc,请检查以下线程:


现在您的确切问题是什么?既然您没有使用任何自定义序列化程序,为什么要测试
restemplate
正在使用的序列化程序?它已经是一个经过良好测试的代码。如果您有一个自定义序列化程序,那么我建议单独编写一个单元测试并单独测试它。为什么要检查序列化程序?更好地解释用例返回的json没有正确地进入序列化类。在对属性进行了很长时间的修改之后,很明显,
@JsonProperty
似乎对我的用例不起作用,但是
@JsonGetter
@JsonSetter
似乎起作用。最好有一个测试,它接受一个JSON字符串,将其注入REST管道,并查看另一端输出的内容是否符合预期。这不是关于测试序列化程序,而是关于测试我的DTO映射,这些映射错误且容易出错。这对我没有帮助,我需要知道使用了哪个序列化程序,以及如何测试序列化程序。一般的模拟指导原则没有多大帮助。通常,在RestTemplate中,转换是使用Jackson完成的。Mybe此链接可以帮助您