我有一个带注释的控制器,其中包含一个需要模型和绑定结果的方法
@RequestMapping(method = RequestMethod.POST)
public ModelAndView submit(@ModelAttribute(“user”) User user, BindingResult bindingResult) {
//do something
}
如何测试绑定结果?如果我用一个用户和一个绑定结果调用该方法,那么我不会测试绑定过程。我认为myst是一个需要MockHttpServletRequest的东西并返回模型和绑定结果,有什么建议吗?
答案 0 :(得分:4)
您是否尝试测试绑定(在调用此方法之前发生)或者您是否尝试测试“提交”处理程序方法?
您可以使用以下内容测试绑定:
@Test
public void testHandlerMethod() {
final MockHttpServletRequest request = new MockHttpServletRequest("post", "/...");
request.setParameter("firstName", "Joe");
request.setParameter("lastName", "Smith");
final User user = new User();
final WebDataBinder binder = new WebDataBinder(user, "user");
binder.bind(new MutablePropertyValues(request.getParameterMap()));
final ModelAndView mv = controllerTestInstance.submit(user, binder.getBindingResult());
// Asserts...
}
答案 1 :(得分:3)
您可能会发现spring-test-mvc项目与您要实现的目标非常相关。该项目今天可以使用并且整体上非常简单,但是在此过程中会有一些变化,所以如果你需要一个稳定的API,那么这还不适合你。