我使用以下代码对我的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
,这可能吗?
谢谢, 唐
答案 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());