Mockito BDD - 模拟 RestRemplate exchange() 方法

Mockito BDD - mocking RestRemplate exchange() method

我正在尝试使用以下代码模拟 RestTemplate exchange() 调用:

测试方法

given(restTemplate.exchange(any(UriComponents.class), any(HttpMethod.class), any(HttpEntity.class), any(StatusResponse.class)))
            .willReturn(new ResponseEntity<>(HttpStatus.BAD_GATEWAY));

代码无法编译,因为:

  1. 它抱怨 cannot resolve method willReturn(new ResponseEntity<>(HttpStatus.BAD_GATEWAY))
  2. 它抱怨 cannot resolve method exchange(T, T, T, T)

我应该如何更改签名才能使其正常工作?谢谢

查看 docs 交换方法。我没有看到任何在参数中使用 UriComponents 的方法。

作为交换方法的第一个参数,您需要使用 StringURIRequestEntity

exchange (url) 的第一个参数应该是 eq("url")anyString()(假设 "url" 是您在你的测试)。

第 4 个参数(响应 class)应为 eq(StatusResponse.class)any(Class.class)