如何解决MockRestServiceServer.verify不适用于使用Unirest库的服务
我正在尝试为调用第三方API的服务编写测试用例。我的服务代码如下:
public List<FoodTruckDto> listFoodTruckLocations(Double givenLatitude,Double givenLongitude) throws Exception{
log.info("Given Latitude => "+givenLatitude+" Given Longitude => "+givenLongitude);
List<FoodTruckDto> foodTrucks = new ArrayList<>();
HttpResponse<List<FoodTruckDto>> foodTrucksResponse = Unirest.get(locationUrl)
.queryString("facilitytype","Truck")
.asObject(new GenericType<List<FoodTruckDto>>(){});
if (foodTrucksResponse.getStatus() == HttpStatus.OK) {
foodTrucks = foodTrucksResponse.getBody();
foodTrucks.sort(new SortingLocations(givenLatitude,givenLongitude));
} else {
UnirestParsingException ex = foodTrucksResponse.getParsingError().get();
log.error("Error Message => "+ex.getMessage());
log.error("Error Cause => "+ex.getCause());
log.error("Error Original Body => "+ex.getoriginalBody());
throw new CustomException("exc001");
}
return foodTrucks;
}
服务方法的测试代码如下,该代码使用RestTemplate和MockRestServiceServer:
@SpringBoottest
public class LocationServiceImpltest {
@Mock
private RestTemplate restTemplate;
private MockRestServiceServer mockServer;
@MockBean
private LocationService locationService;
@BeforeEach
public void setUp() {
mockServer = MockRestServiceServer.createServer(restTemplate);
}
@Test
public void testListFoodTruckLocations() throws Exception {
Gson gson = new Gson();
List<FoodTruckDto> foodTruckResult = new ArrayList<>();
this.mockServer.expect(ExpectedCount.once(),requestTo("https://data.sfgov.org/resource/rqzj-sfat.json?facilitytype=Truck"))
.andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(gson.toJson(foodTruckResult)));
List<FoodTruckDto> foodTruckDtos = locationService.listFoodTruckLocations(233.3,-131.02);
mockServer.verify();
assertthat(foodTruckDtos).isEqualTo(foodTruckResult);
}
}
测试代码在mockServer.verify()
处失败。这与Unirest
和RestTemplate
有什么关系吗?不能使用RestTemplate测试使用Unirest的服务?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。