我有一种使用RestTemplate的方法。我使用以下代码进行呼叫:

         final ResponseEntity<RESTResponse> responseEntity = restTemplate.exchange(uri,
                                                                               HttpMethod.POST,
                                                                               httpEntityWithHeaders,
                                                                               RESTResponse.class);


httpEntityWithHeadsHttpEntity<String>类型。我正在编写测试并尝试模拟RestTemplate,以便当它调用exchange方法时,它将引发异常。

我试图像这样模拟它:

      when(restTemplate.exchange(
     ArgumentMatchers.contains(randomHost),
     ArgumentMatchers.eq(HttpMethod.POST),
     ArgumentMatchers.<HttpEntity<List<String>>>any(),
     ArgumentMatchers.<ParameterizedTypeReference<List<RESTResponse>>>any())

  ).thenThrow(new ResourceAccessException("Random exception message."));


但是在运行测试时,它不会引发异常,而只是继续。

有什么建议?

最佳答案

正如您所说的,httpEntityWithHeadsHttpEntity<String>类型,因此必须以与HttpEntity<String>匹配的方式存根。

 when(restTemplate.exchange(
 ArgumentMatchers.contains(randomHost),
 ArgumentMatchers.eq(HttpMethod.POST),
 ArgumentMatchers.<HttpEntity<String>>any(),
 ArgumentMatchers.<ParameterizedTypeReference<List<RESTResponse>>>any())

).thenThrow(new ResourceAccessException("Random exception message."));

10-05 23:26