如何通过MockMvc测试ModelAttribute参数

时间:2013-10-03 13:23:51

标签: java spring spring-mvc spring-test spring-test-mvc

我写了这个控制器方法:

  @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;
        }

更新

myCandidate instantiants so:

@ModelAttribute(value = "myCandidate")
    public Candidate loadCandidateById(
            @RequestParam(required = false) Integer candidateId) {
        if (candidateId != null)
            return candidateService.findById(candidateId);
        return null;
    }

我可以通过哪种方式测试此方法是否获得候选人?

我使用MockMvc。

1 个答案:

答案 0 :(得分:0)

您无法专门测试该方法是否会收到Candidate参数。您的选择是发送错误的请求数据,因此使Spring无法正确实例化它并返回400错误(但这可能由于其他原因而发生)。或者发送正确的数据并接收您通常所期望的数据。

请注意,您不应该测试Spring功能。当您使用第三方框架时,您认为它已经过正确测试,尤其是像Spring这样的测试。