gpt4 book ai didi

java - JUnit 测试包含 RestTemplate 交换调用的 void 方法

转载 作者:行者123 更新时间:2023-12-02 04:48:54 25 4
gpt4 key购买 nike

我正在尝试为我的方法之一编写一个测试类,并且我是 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 测试的新手,不知道如何为此编写覆盖所有行的测试类。

如果此问题已得到解答,请向我指出相应的 URL。

任何帮助将不胜感激。

最佳答案

有点晚了,但如果其他人也遇到了这个问题:

如果你错误地使用mockito,也会出现这个错误。应该是:

Mockito.verify(restTemplate).exchange(Mockito.anyString() ... 

请注意紧跟在restTemplate后面的右括号,因此exchange是在mockito之上调用的。

关于java - JUnit 测试包含 RestTemplate 交换调用的 void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56458759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com