Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用MockMvc测试ModelAttribute参数_Java_Spring_Spring Mvc_Spring Test_Spring Test Mvc - Fatal编程技术网

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
。这些测试可能存在于弹簧单元测试中。您不需要进行单元测试,这超出了代码的范围。集成测试将向您展示它的工作原理。