Как написать унитарный тест для контроллера, который требует текущего пользователя? - PullRequest
0 голосов
/ 01 апреля 2019

Я пишу юнит-тесты для 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);

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...