如何使用 MockMvc 对象测试使用 Post 方法检索数据的控制器?
How to test a Controller, which retrieves data with Post method, using a MockMvc object?
大家好,我正在使用 Spring MVC 框架,我想测试我的控制器。其中之一使用 Post 方法从视图中检索数据,但我不知道如何测试它。
这是我的控制器:
@RequestMapping(value="/index", method=RequestMethod.POST)
public String postMessage(@RequestParam("newLetter") String lttr, Model model)
{
Letter newLetter = lttr;
this.letterService.insertLetter(newLetter);
this.allLetters = this.letterService.getAllLetters();
model.addAttribute("allLetters", this.allLetters);
return "redirect:/index";
}
这是我尝试过的测试,但显然不起作用。
@Test
@WithMockUser("randomUser")
public void aTest() throws Exception
{
Letter lttr = new Letter();
mockMvc.perform(post("/index").with(testSecurityContext()))
.andExpect(status().isOk())
.requestAttr("newLetter", lttr)
.andExpect(model().attributeExists("allLetters"));
}
我想你想要:
mockMvc.perform(post("/index").with(testSecurityContext())
.param("newLetter", lttr))
.andExpect(status().isOk())
.andExpect(model().attributeExists("allLetters"));
注意第三行的 param
而不是 requestAttr
。这是您在控制器方法中寻找的参数,带有 @RequestParam
注释,而不是属性。
大家好,我正在使用 Spring MVC 框架,我想测试我的控制器。其中之一使用 Post 方法从视图中检索数据,但我不知道如何测试它。
这是我的控制器:
@RequestMapping(value="/index", method=RequestMethod.POST)
public String postMessage(@RequestParam("newLetter") String lttr, Model model)
{
Letter newLetter = lttr;
this.letterService.insertLetter(newLetter);
this.allLetters = this.letterService.getAllLetters();
model.addAttribute("allLetters", this.allLetters);
return "redirect:/index";
}
这是我尝试过的测试,但显然不起作用。
@Test
@WithMockUser("randomUser")
public void aTest() throws Exception
{
Letter lttr = new Letter();
mockMvc.perform(post("/index").with(testSecurityContext()))
.andExpect(status().isOk())
.requestAttr("newLetter", lttr)
.andExpect(model().attributeExists("allLetters"));
}
我想你想要:
mockMvc.perform(post("/index").with(testSecurityContext())
.param("newLetter", lttr))
.andExpect(status().isOk())
.andExpect(model().attributeExists("allLetters"));
注意第三行的 param
而不是 requestAttr
。这是您在控制器方法中寻找的参数,带有 @RequestParam
注释,而不是属性。