我正在迁移 Spring MVC 控制器以使用较新的样式注释,并希望对验证命令对象的控制器方法进行单元测试(请参见下面的简单示例)。
@RequestMapping(method = RequestMethod.POST)
public String doThing(Command command, BindingResult result,
HttpServletRequest request, HttpServletResponse response,
Map<String, Object> model){
ThingValidator validator = new ThingValidator();
validator.validate(command, result);
... other logic here
}
我的问题是我必须在单元测试中调用控制器的方法,并提供模拟值以满足其签名以正确执行代码,并且我无法弄清楚如何模拟 BindingResult。
在旧样式的 Controller 中,签名只是简单地采用了 HttpServletRequest 和 HttpServletResponse,它们很容易被模拟,但是由于新注释样式的灵活性,人们必须通过签名传递更多内容。
如何模拟 Spring BindingResult 以在单元测试中使用?