1

这是我的控制器类。现在我想使用 mockito 为下面的控制器类编写单元测试用例

谁能帮我解决这个问题?

@Controller
public class LoginController {

    @Autowired
    @Qualifier("skillService")
    private SkillService skillService;

    @Autowired
    private SkillReferenceData skillReferenceData;

    @Autowired
    private EmployeeValidator employeeValidator;

    @RequestMapping(value = "/loginview.html", method = RequestMethod.GET)
    @PreAuthorize("hasAuthority('ROLE_ANONYMOUS')")
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse respresultonse) throws Exception {
        ModelAndView model = new ModelAndView("login");
        return model;
    }

    @RequestMapping("/login.htm")
    protected ModelAndView onSubmit(@ModelAttribute("userVB") UserVB userVB,
        BindingResult result, HttpServletRequest request,
    HttpServletResponse response) throws Exception {
        return new ModelAndView("login");
    }

}
4

1 回答 1

0

通过以下方式创建 Controller 类的实例:

@InjectMocks
LoginController loginController;

通过使用此注释,您还可以使用以下方法访问和模拟您的私有变量,例如 SkillService、skillReferenceData、employeeValidator:

@Mock(name = "skillService")
SkillService mockSkillService = createMock(SkillService.class);

不要忘记通过MockitoAnnotations.initMocks(this);在单元测试之前添加来初始化您的 Mockito 注释。

最后,您可以使用以下方法模拟您的构造函数:

Mockito.when(new ModelAndView(any(String.class).thenReturn(null)));
于 2016-09-23T08:15:52.790 回答