我正在为从基础扩展的Spring控制器编写单元测试。在父亲的方法中,我调用了以下函数:
protected OnCustomerUser getUser() {
Object obj = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
return (OnCustomerUser) obj;
}
我应该如何测试?请记住,这是一个单元测试,我不需要创建spring上下文来运行它。
我正在使用JUnit 4.11
到目前为止,我最好的主意是重写该方法并返回一个虚拟用户,但是我不知道在使用@InjectMocks时如何做到这一点(在扩展测试套件时,我将不得不继续添加更多的模拟对象)
@Mock
HibernateCRMObjectTypeDao crmObjectTypeDao;
@InjectMocks
BpmProcessController bpmProcessController;
@Mock
HttpServletRequest request;
@Before
public void prepareMocks() {
CRMObjectType bpmProcessType = new CRMObjectType();
bpmProcessType.setObjectName("BPM_PROCESS");
when(crmObjectTypeDao.getByClassName(BpmProcess.class.getName())).thenReturn(bpmProcessType);
}
@Test
public void loadForm() throws Exception {
bpmProcessController.loadForm(request, 23l, "load", null);
}