I have this contoller method:
@RequestMapping(value = "/addEvent", method = RequestMethod.POST)
public String addEvent(Model model,
@Valid @ModelAttribute("myEvent") Event event,
BindingResult result, RedirectAttributes redirectAttributes,
@RequestParam(required = true) Integer selectedEventTypeId,
@RequestParam(required = true) Integer selectedEventStatusId) {
if (result.getErrorCount() > 1 ){
return "eventDetailsAdd";
}
eventService.addEvent(event, selectedEventTypeId, selectedEventStatusId);
redirectAttributes.addAttribute("idEvent", event.getId());
redirectAttributes.addAttribute("message", "added correctly at " + new Date() );
return "redirect:eventDetails";
}
Using mockMvc I want to mock result and check in both varians of if (result.getErrorCount() > 1 )
How I can make it?
With MockMvc
, you cannot. MockMvc
is a type of HTTP client. You generate your HTTP request with the MockMvcRequestBuilders
, setup your headers, request parameters, body, and URL. MockMvc
will mock sending the request integrating the full DispatcherServlet
stack.
If you want to mock the BindingResult
argument, I suggest you test your @Controller
class independently.
// in @Test
MyController controller = new MyController(/* maybe other arguments */)
// generate your mocks and declare expectations
controller.addEvent(/* mocks go here */);
// verify your mocks