gpt4 book ai didi

java - 单元测试用例 MockRestServiceServer 预期的 url 不适用于 RestTemplate

转载 作者:行者123 更新时间:2023-12-01 09:36:36 26 4
gpt4 key购买 nike

我已经测试了一个验证 url 的 url 类

class ValidateUrl {
public Integer validateUrl(String url, int timeOut) throws Exception {
String url;
private RestTemplate restTemplate = new RestTemplate();
try {
((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setConnectTimeout(1000 * timeOut);
ResultClass result = restTemplate.postForObject(url, null, ResultClass.class);
if(result!= null) {
return result.getErrorCode();
}

} catch (Exception e) {
log.error("Error"+ e);
}
return -1;

}
}

我已经创建了一个测试类的测试用例 ValidateUrlTest 我正在验证 url

@Autowire
private ValidateUrl validateUrlInstance

private String url = "https://testingurl.com";
private String result = "{\"result\" : \"-1\"}";

@Test
public void validateUrlTest() throws Exception{
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
RestTemplate template = new RestTemplate(factory);
MockRestServiceServer server = MockRestServiceServer.createServer(template);
server.expect(requestTo(url))
.andRespond(given());
int i= validateUrlInstance.validateUrl(url, 2);
server.verify();

}

但是得到 java.lang.AssertionError:需要进一步的请求 [testng] 1 中的 0 被执行

最佳答案

您正在模拟的 RestTemplate 实例不是 ValidateUrl 类中使用的实例。

您应该注入(inject)它,而不是直接在方法中实例化它。

public class ValidateUrl {

private RestTemplate restTemplate;

@Autowired
public ValidateUrl(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}

public Integer validateUrl(String url, int timeOut) throws Exception {
...
}
}

关于java - 单元测试用例 MockRestServiceServer 预期的 url 不适用于 RestTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38846912/

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