Dato ho ereditato qualche codice regolatore Spring MVC con firmaSpring MockMVC iniettare mockHttpServletRequest quando non in firma del metodo
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public ModelAndView upload(HttpServletRequest request, HttpServletResponse response) {
String remoteAddress = request.getRemotedAddr();
auditService.logAddress(remoteAddress);
// do work...
return mav;
}
e ho un test Spring MockMvc che esegue il test
public void someTest() {
mockMvc().perform(fileUpload("/upload").file(FileFactory.stringContent("myFile")));
// do work...
verify(auditService.logAddress("123456"));
}
ho bisogno per impostare l'indirizzo remoto su "12345" sull'oggetto HttpServletRequest passato al metodo del mio controller di caricamento, in modo da poter verificare la chiamata a simulare auditService nel test.
posso creare un oggetto MockHttpServletRequest e chiamare il setRemoteAddr() metodo, ma come passare questo oggetto di richiesta finto al mockMvc() chiamata di metodo?
Ho provato questo, ma request.getRemoteAddr() restituisce 127.0.0.1 che penso sia il comportamento predefinito. :( –
Non se viene chiamato 'setRemoteAddr', quindi ci deve essere qualcosa di sbagliato con la soluzione/setup/testcode ... –
Funziona sicuramente e ora è possibile utilizzare un lambda Java 8 per farlo. – objectuser