Java 如何用MockMvc测试ModelAttribute参数
我写了这个控制器方法:Java 如何用MockMvc测试ModelAttribute参数,java,spring,spring-mvc,spring-test,spring-test-mvc,Java,Spring,Spring Mvc,Spring Test,Spring Test Mvc,我写了这个控制器方法: @RequestMapping("/submitFormAdd") public ModelAndView submitFormAdd( Model model, @ModelAttribute("myCandidate") @Valid Candidate myCandidate, BindingResult result,
@RequestMapping("/submitFormAdd")
public ModelAndView submitFormAdd(
Model model,
@ModelAttribute("myCandidate") @Valid Candidate myCandidate,
BindingResult result,
RedirectAttributes redirectAttributes) {
if (result.hasErrors()) {
return new ModelAndView("candidateDetailsAdd");
}
myCandidate.setDate(new Date());
candidateService.add(myCandidate);
redirectAttributes.addAttribute("message", "added Correctly at "+ new Date() );
redirectAttributes.addAttribute("id", myCandidate.getId());
ModelAndView modelAndView = new ModelAndView(
"redirect:loadCandidateById");
return modelAndView;
}
更新
我的候选人是这样的:
@ModelAttribute(value = "myCandidate")
public Candidate loadCandidateById(
@RequestParam(required = false) Integer candidateId) {
if (candidateId != null)
return candidateService.findById(candidateId);
return null;
}
我可以用什么方法测试此方法是否获得候选值
我使用MockMvc。您无法具体测试该方法是否将接收
候选者
参数。您可以选择发送错误的请求数据,从而使Spring无法正确地实例化它并返回400错误(但这可能是由于其他原因)。或者发送正确的数据并接收您通常期望的内容
请注意,您不应该测试Spring功能。当您使用第三方框架时,您假设它已经过适当的测试,尤其是像Spring这样的框架 @user2740224如果你是这样得到它的,那么我会测试这个特殊的方法。Spring将正确地将其解析为处理程序方法的参数。相信它。我可以测试loadCandidateById方法在提交Formadd方法之前是否会调用?@user2740224否,您可以单独测试它们。可能存在测试这些方法调用顺序的方法?@user2740224不通过
MockMvc
。这些测试可能存在于弹簧单元测试中。您不需要进行单元测试,这超出了代码的范围。集成测试将向您展示它的工作原理。