0
Ich möchte den Resttemplate Aufruf verspotten, die instansiated als lokale Variable und Austauschmethode aufgerufen wird. Ich verspottete die Verwendung der Erwartung, aber es ruft die tatsächliche Methode auf. Fehle ich etwas? Bitte helfen Sie mir dabei. Vielen Dank im VorausMocking lokales Objekt funktioniert nicht - jmockit
public class ServiceController {
public String callGetMethod (HttpServletRequest request){
String url = request.getParameter("URL_TO_CALL");
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<String> entity = new HttpEntity<String>(headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> res = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
return res.getBody();
}
}
@RunWith(JMockit.class)
public class ServiceControllerTest {
@Tested
private ServiceController controller;
@Test
public void callGetMethod (@Mocked HttpServletRequest request, @Mocked RestTemplate restTemplate){
new NonStrictExpectations() {
{
restTemplate.exchange(host,HttpMethod.GET, entity,String.class); returns (new ResponseEntity<String>("success" , HttpStatus.OK));
}
ResponseEntity<String> response = controller.callGetMethod(httpServletRequest);
}
}
Versuchen Sie explizit @Mock RestTemplate nach dem Definieren der Klasse. Versuchen Sie auch, Controller ocntroller = new Controller() zu instanziieren; Denken Sie darüber nach, dass sich der Name in diesen Klassencontroller ändert. – alxbxbx
Ich gab nur einen allgemeinen Namen für Controller und es ist kein tatsächlicher Name im Code verwendet. Außerdem ist es nicht mein Code, um die restTemplate-Objektplatzierung zu ändern. – Abdul
Sie können die Antwort dieses Typen überprüfen https://stackoverflow.com/questions/42406625/how-to-mock-resttemplate-in-java-spring – alxbxbx