Java 当用户不存在时,单元测试用例中的模拟绑定结果
我对莫基托和朱尼特很陌生。我正在为忘记密码工作流创建测试用例。下面是控制器和测试的代码。有人能告诉我如何测试bindingresult吗Java 当用户不存在时,单元测试用例中的模拟绑定结果,java,junit,mockito,Java,Junit,Mockito,我对莫基托和朱尼特很陌生。我正在为忘记密码工作流创建测试用例。下面是控制器和测试的代码。有人能告诉我如何测试bindingresult吗 @RequestMapping(value = "/user/public/forgotPassword", method = RequestMethod.POST) public ModelAndView sendforgetPasswordLink(@ModelAttribute ForgetPasswordBean forgetPasswordBean,
@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)PublicUserController.java:410是“result.reject”(“电子邮件”,“此电子邮件不存在帐户”);“这之前一定失败过。因为我所建议的更改仅出现在
TestForgetPasswordForNoUserFound
方法末尾的断言中
Mockito.verify(mockBindingResult).reject("email", "An account does not exist for this email.");