模拟在Spring v1.5.14.RELEASE中返回列表的RestTemplate



我有这个 RestTemplate 我想模拟

ResponseEntity<List<Hotel>> deliveryResponse =
restTemplate.exchange(link.getHref(),
HttpMethod.GET, null, new ParameterizedTypeReference<List<Hotel>>() {
});

但我不知道是否有可能。我试过了

when(restTemplate.exchange(eq("delivery"), eq(HttpMethod.GET), any(RequestEntity.class), eq(Object.class)))
.thenReturn(new ResponseEntity<>(new ParameterizedTypeReference<List<Hotel>>(), HttpStatus.OK));

any(Class)

匹配给定类型的任何对象,不包括空值。


any()

匹配任何内容,包括空值和变量。


因此,如前所述,将测试代码更改为以下内容将解决您的问题。

由于ParameterizedTypeReference是一个抽象类而无法实例化,因此您可以返回一个模拟并在其上定义所需的行为。

List<Hotel> hotels = new ArrayList<>();
ResponseEntity response = Mockito.mock(ResponseEntity.class);
Mockito.when(response.getStatusCode()).thenReturn(HttpStatus.OK);
Mockito.when(response.getBody()).thenReturn(hotels);
when(restTemplate.exchange(eq("delivery"), eq(HttpMethod.GET), any(), eq(Object.class)))
.thenReturn(response);

最新更新