Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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/4/fsharp/3.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 当用户不存在时,单元测试用例中的模拟绑定结果_Java_Junit_Mockito - Fatal编程技术网

Java 当用户不存在时,单元测试用例中的模拟绑定结果

Java 当用户不存在时,单元测试用例中的模拟绑定结果,java,junit,mockito,Java,Junit,Mockito,我对莫基托和朱尼特很陌生。我正在为忘记密码工作流创建测试用例。下面是控制器和测试的代码。有人能告诉我如何测试bindingresult吗 @RequestMapping(value = "/user/public/forgotPassword", method = RequestMethod.POST) public ModelAndView sendforgetPasswordLink(@ModelAttribute ForgetPasswordBean forgetPasswordBean,

我对莫基托和朱尼特很陌生。我正在为忘记密码工作流创建测试用例。下面是控制器和测试的代码。有人能告诉我如何测试bindingresult吗

@RequestMapping(value = "/user/public/forgotPassword", method = RequestMethod.POST)
public ModelAndView sendforgetPasswordLink(@ModelAttribute ForgetPasswordBean forgetPasswordBean,BindingResult result, HttpSession session) {

    BreadCrumbBuilder.addLinktoBreadCrumb(session, new Link(Constants.FORGET_PASSWORD_TITLE, "/user/public/forgotPassword", Constants.GROUP_USER, 0));

    Map<String, String> breadCrumbs = HomePageController.setupInitialBreadCrumbs(session);
    breadCrumbs.put(Constants.FORGET_PASSWORD_TITLE,    "/user/public/forgotPassword"); 
    session.setAttribute(SessionAttributes.BREAD_CRUMBS,breadCrumbs);

    ModelAndView mav = new ModelAndView(); 
    mav.addObject("displayTitle", Constants.FORGET_PASSWORD_TITLE);

    PublicUser user = publicUserService.findPublicUserByEmail(forgetPasswordBean.getEmail().toLowerCase());
    if(user == null) {
        result.reject("email", "An account does not exist for this email.");
        mav.setViewName("publicuser/forgetPassword.jsp");
        return mav;
    }

    String randomId = java.util.UUID.randomUUID().toString();
    user.setTempId(randomId);
    mailService.sendForgetPasswordLink(user);
    publicUserService.savePublicUser(user);
    String msg = "Password reset instructions have been sent to your email.";

    mav.addObject("msg", msg);
    mav.setViewName("message.jsp");
    return mav;
}

您可以通过检查是否调用了
reject
方法来验证
BindingResult
的行为

基本上不是

assertEquals("An account does not exist for this email.", modelMap.get(mockBindingResult));
您可以执行以下操作

Mockito.verify(mockBindingResult).reject("email", "An account does not exist for this email.");

这样您就可以验证是否调用了该方法。

我运行了测试。由于NullPointerException,它失败。跟踪太长了…所以我不能在这里发布。你知道这次失败的原因吗?谢谢您至少可以在上面写“NullPointerException”的行上发布“java.lang.NullPointerException”在gov.hhs.cdelr.web.PublicUserController.sendforgetPasswordLink(PublicUserController.java:410)在gov.hhs.cdelr.web.PublicUserControllerTest.TestForNoUserFound(PublicUserControllerTest.java:104)上发布sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect.Method.invoke(Method.java:606)PublicUserControll‌​er.java:410是“result.reject”(“电子邮件”,“此电子邮件不存在帐户”);“这之前一定失败过。因为我所建议的更改仅出现在
TestForgetPasswordForNoUserFound
方法末尾的断言中
Mockito.verify(mockBindingResult).reject("email", "An account does not exist for this email.");