我测试了一个验证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我在哪里验证网址
@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] 0中的0个被执行
答案 0 :(得分:1)
您正在嘲笑的RestTemplate
实例不是ValidateUrl
类中使用的实例。
你应该注入它,而不是直接在方法中进行直接感染。
public class ValidateUrl {
private RestTemplate restTemplate;
@Autowired
public ValidateUrl(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public Integer validateUrl(String url, int timeOut) throws Exception {
...
}
}