我正在尝试为我的一种方法编写Test类,并且对JUnit还是陌生的。我的课程返回一个void,并有一个RestTemplate.exchange调用到外部端点。
我开始尝试这种方法,但这给了我NullInsteadOfMockException。
@Test
public void service1test() throws IOException{
ResponseEntity<?> responseEntity = new ResponseEntity<>(HttpStatus.ACCEPTED);
RestTemplate restTemplate = Mockito.mock(RestTemplate.class);
Mockito.verify(restTemplate.exchange(Mockito.anyString(), Mockito.<HttpMethod> any(), Mockito.<HttpEntity<?>> any(), Mockito.<Class<?>> any(), Mockito.<String, String> anyMap()));
}
这是我要为其编写单元测试的方法。
@Autowired
private RestTemplate restTemplate;
public void service1(String a, String b) {
RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
this.restTemplate = restTemplateBuilder.build();
HttpHeaders headers = new HttpHeaders();
try {
headers.set("ID", ID);
headers.set("secret", secret);
System.out.println(docStoreUrl + itemID);
HttpEntity requestEntity = new HttpEntity<>(null, headers);
ResponseEntity response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, Object.class);
log.info("Status code for get : {}", response.getStatusCodeValue());
if(response.getStatusCodeValue() == 200) {
Object document = (Object) response.getBody();
Class2.service2.execute(document);
}
else {
log.info("Failed to retrieve document due to {}", response.getStatusCodeValue());
}
}
我是JUnit测试的新手,无法弄清楚如何为汇聚所有行而编写Test类。
如果这个问题已经回答,请指向适当的网址。
任何帮助都会得到很大的帮助。
答案 0 :(得分:0)
有点晚了,但是如果有人摔倒了:
如果您使用嘲笑错误,也会发生此错误。 应该是:
Mockito.verify(restTemplate).exchange(Mockito.anyString() ...
在restTemplate之后立即注意右括号,因此在mockito的顶部调用了交换。