我有这个连接方法:
@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";
}
使用 mockMvc 我想模拟结果并签入if (result.getErrorCount() > 1 )
的两个变量
我怎么能做到?
对于MockMvc
,你不能。 MockMvc
是一种HTTP客户端。您可以使用 MockMvcRequestBuilders
生成 HTTP 请求,设置标头、请求参数、正文和 URL。 MockMvc
将模拟发送集成完整DispatcherServlet
堆栈的请求。
如果你想嘲笑BindingResult
论点,我建议你独立测试你的@Controller
类。
// in @Test
MyController controller = new MyController(/* maybe other arguments */)
// generate your mocks and declare expectations
controller.addEvent(/* mocks go here */);
// verify your mocks