如何测试spring 2.5控制器上使用的绑定器/属性编辑器

时间:2010-02-23 16:28:27

标签: unit-testing data-binding spring-mvc

我有一个带注释的控制器,其中包含一个需要模型和绑定结果的方法

@RequestMapping(method = RequestMethod.POST)
  public ModelAndView submit(@ModelAttribute(“user”) User user, BindingResult bindingResult) {
     //do something
}

如何测试绑定结果?如果我用一个用户和一个绑定结果调用该方法,那么我不会测试绑定过程。我认为myst是一个需要MockHttpServletRequest的东西并返回模型和绑定结果,有什么建议吗?

2 个答案:

答案 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,那么这还不适合你。