我需要编写一个客户端代码来调用webservice中的方法,这是我的客户端代码。
@HystrixCommand
public List<Location> saveLocation (List<LocationDTO> locationDTO) {
HttpEntity<List<LocationDTO>> httpEntity = new HttpEntity<>(locationDTO);
ResponseEntity<List<Location>> response =
restTemplate.exchange(locationProperties.getBaseURL(),HttpMethod.POST,
httpEntity,new ParameterizedTypeReference<List<Location>>() {
});
return getResponseBody(response);
}
我为此编写了Junit来测试这段代码。
@Test
public void saveLocationTest() throws Exception {
List<LocationDTO> locationList = new ArrayList<>();
LocationDTO locationDTO = new LocationDTO();
locationList.add(locationDTO);
Location location = new Location();
location.setLocationID(100);
mockServer.expect(requestTo(baseURL)).andExpect(method(HttpMethod.POST))
.andRespond(withSuccess("{\"locationID\":100}",MediaType.APPLICATION_JSON));
List<Location> response = locationClient.saveLocation(locationList);
assertEquals(response, location);
}
但是当我运行Junit时出现以下错误,这也意味着我的客户端代码错误。
引起:com.fasterxml.jackson.databind.JsonMappingException:无法&gt;从START_OBJECT令牌反序列化java.util.ArrayList的实例 在[来源:java.io.ByteArrayInputStream@175b9425; line:1,column:1]
如果我只是传递LocationDTO而不是List&lt; LocationDTO&gt;,那么Rest模板和junit可以正常工作。有人可以帮我这个吗?