Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用MockMvc对象测试一个控制器,该控制器使用Post方法检索数据?_Java_Spring_Spring Mvc_Spring Test Mvc - Fatal编程技术网

Java 如何使用MockMvc对象测试一个控制器,该控制器使用Post方法检索数据?

Java 如何使用MockMvc对象测试一个控制器,该控制器使用Post方法检索数据?,java,spring,spring-mvc,spring-test-mvc,Java,Spring,Spring Mvc,Spring Test Mvc,大家好,我正在使用SpringMVC框架,我想测试我的控制器。其中一个使用Post方法从视图中检索数据,我不知道如何测试它 这是我的控制器: @RequestMapping(value="/index", method=RequestMethod.POST) public String postMessage(@RequestParam("newLetter") String lttr, Model model) { Letter newLetter = lttr; this.l

大家好,我正在使用SpringMVC框架,我想测试我的控制器。其中一个使用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
注释,而不是属性