2013-10-16 46 views
0

的模擬我有這個位指示方法:如何使用MockMvc與控制器

@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)

兩個varians檢查我如何能做到嗎?

回答

0

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 
+0

如果我使用MockMvc,什麼result.andExpect(MockMvcResultMatchers.view()名(/ *我可以期待在這裏?* /)) – gstackoverflow

+0

@gstackoverflow你可以這樣做的,但你不會不要嘲笑'BindingResult'。你將不得不發送使'Event'參數無效的請求參數。 –

+0

如何通過http請求使事件失效? – gstackoverflow

相關問題