Ich habe eine URL-Klasse testen, die URL zu validierenEinheit Testfall MockRestServiceServer erwartete URL funktioniert nicht mit RestTemplate
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;
}
}
ich habe einen Testfall Testklasse erstellen ValidateUrlTest wo ich die URL am Validieren
@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();
}
aber immer java.lang.AssertionError: Weitere Anfrage (n) erwartet [testng] 0 von 1 wurden
ausgeführt
https://objectpartners.com/2013/01/09/rest-client-testing-with-mockrestserviceserver/ schauen Sie bitte das Beispiel diese auch nicht RestTemplate instanziiert, ich habe viele MockRestServiceServer Beispiel gesehen, wo sie sind autowire nur die RestTemplate; ( –
Ja, das ist genau das, was ich in dem Beispiel sage, dass Sie mir die RestTemplate injiziert wird (mit Spring @Autowired), aber in Ihrem Code ist RestTemplate innerhalb Ihrer Service-Methode installiert und nicht injiziert. – Matt