如何将模拟Mvc与控制器的模拟一起使用



我有这个连接方法:

@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

最新更新