Я пишу юнит-тесты для Spring Controller, который расширяется от базового.В методе отца я вызываю следующую функцию:
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);
}