您正在测试MyClass类中的逻辑,因此不应模拟它。
RestTemplate是MyClass内部的依赖项,因此这正是您需要模拟的内容。通常,它在测试中应如下所示:
这只是一个简单的例子。一个好的做法是检查传递给您的模拟的参数是否等于期望的参数。一种方法是
Mockito.eq()用实际的预期数据代替。另一个是单独验证它,如下所示:
public ResponseEntity<String> postJson(Set<Type> Types){ try { String oneString = String.join(",", Types); Map<String, String> requestBody = new HashMap<>(); requestBody.put("type", oneString); JSonObject jsonObject = new JSonObject(requestBody); HttpEntity<String> request = new HttpEntity<String>(jsonObject.toString(), null); ResponseEntity result = restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(request, getHttpHeaders()), String.class); } } return Types;您可以按如下方式编写上述方法的测试
@Mock RestTemplate restTemplate; private Poster poster; HttpEntity<String> request = new HttpEntity<>(jsonObject.toString(), getHttpHeaders()); ResponseEntity<String> result = restTemplate.exchange(uri, HttpMethod.POST, request, String.class); Mockito.verify(restTemplate, Mockito.times(1)).exchange( Mockito.eq(uri), Mockito.eq(HttpMethod.POST), Mockito.eq(request), Mockito.eq(String.class)); Assert.assertEquals(result, poster.postJson(mockData)); HttpHeaders getHttpHeaders() { HttpHeaders headers = new HttpHeaders(); headers.add(// whatever you need to add); return headers; }


