测试Spring MVC控制器

时间:2010-04-22 12:01:10

标签: validation spring-mvc

我使用以下代码对我的SpringMVC(v.5.5)控制器进行单元测试:

public void testParamValidation() {
    MyController controller = new MyController();
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.addParameter("foo", "bar");
    request.addParameter("bar", baz");
    ModelAndView mav = controller .handleRequest(request, new MockHttpServletResponse());
    // Do some assertions on mav
}

此控制器是AbstractCommandController的子类,因此参数绑定到命令bean,任何绑定或验证错误都存储在实现Errors接口的对象中。

我似乎无法从测试中找到任何方法来访问此Errors,这可能吗?

谢谢, 唐

1 个答案:

答案 0 :(得分:1)

要在我的控制器中测试验证器,我会执行以下操作。基本上我使用BindException来访问错误。

BindException ex = new BindException(commandObject, "commandName");
controller.onBindAndValidate(new MockHttpServletRequest(), commandObject, ex);
assertEquals(1, ex.getErrorCount());
List<ObjectError> errors = (List<ObjectError>)ex.getAllErrors();
assertEquals("INVALID_COMMAND", errors.get(0).getCode());