Макет статического метода с мокито

1

Я хочу издеваться над статическим методом в Mockito.

Насколько я знаю, это невозможно, как мне решить проблему? powermock - это не вариант.

Я хочу, чтобы моя аутентификационная переменная не была нулевой.

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

Я прочитал здесь ответ, но не знаю, как поставить этот ответ на код. Может кто-нибудь дать решение?

  • 1
    Вставьте SecurityContext вместо того, чтобы искать его с помощью SecurityContextHolder.getContext (). Если вы разместите больше кода, мы могли бы мне помочь.
Теги:
unit-testing
mockito
mocking

1 ответ

1
Лучший ответ

Как вы уже указали, не возможно издеваться над статическими методами с Mockito, и поскольку вы не хотите использовать Powermock или другие инструменты, вы можете попробовать что-то в своих тестах.

  1. Создать тестовый объект аутентификации

    Authentication auth = new...//create instance based on your needs and with required attributes or just mock it if you do not care

  2. Мощный контекст безопасности

    SecurityContext context = mock(SecurityContext.class);

  3. Убедитесь, что ваш макет возвращает соответствующую аутентификацию

    when(context.getAuthentication()).thenReturn(auth);

  4. Установите контекст безопасности в держатель

    SecurityContextHolder.setContext(securityContext);

Теперь каждый вызов SecurityContextHolder.getContext().getAuthentication() должен возвращать объект аутентификации, созданный на шаге 1.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню