spring mvc控制器上的MockMvc
我的控制器中有以下代码:spring mvc控制器上的MockMvc,spring,model-view-controller,mocking,mockmvc,Spring,Model View Controller,Mocking,Mockmvc,我的控制器中有以下代码: @Controller @RequestMapping(value="/my") public class MyController { @RequestMapping(value="/zone/{id}", method=RequestMethod.POST) public ModelAndView zone(@PathVariable Long id, @Valid MyFormBean formBean){ System.out.pr
@Controller
@RequestMapping(value="/my")
public class MyController {
@RequestMapping(value="/zone/{id}", method=RequestMethod.POST)
public ModelAndView zone(@PathVariable Long id, @Valid MyFormBean formBean){
System.out.println(formBean.getId());
ModelMap mod = new ModelMap();
mod.put("test", true);
return new ModelAndView(myViewName, model);
}
}
以及MyControllerTest类中的以下代码
public class MyControllerTest {
@InjectMocks
private MyController myController = new MyController();
private MockMvc mockMvc = MockMvcBuilders.standaloneSetup(MyController).build();
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void myTest() {
MyFormBean formBean = new MyFormBean();
formBean.setId(5L);
ModelAndView mav = new ModelAndView();
int id = 10;
try {
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/my/zone/" + id).param("formData", formData.toString())).andReturn();
} catch(Exception e) {
fail(e.getMessage());
}
}
MyFormBean中的id字段用@NotNull注释
所以我尝试了各种排列(requestAttr、sessionatr等,而不是param和其他一些),但我无法让它工作。充其量我只能得到@Valid子句的例外。其他时候,测试将通过,而不实际输入方法
我尝试了以下几个示例,但找不到任何与我的特定方法签名相关的内容
感谢您的帮助。问题不在您的测试中,问题在于您的主代码(控制器),因为url路径只映射到用
@PathVariable
注释的参数,而不映射到表单对象中 你能详细说明一下吗?控制器方法按预期运行,是否需要将表单对象添加到requestmapping?这说明我对您的问题理解错误。你能详细解释一下“我不能让它工作”吗?