Mocking Scala void с использованием Mockito

Я нашел несколько ответов на это, но ничего не работает для меня.

Попытка смоделировать метод входа в Apache Shiro Subject, который возвращает void.

Интерфейс:

    void login(AuthenticationToken token) throws AuthenticationException;

Я пытался:

   #1
  val subject = mock[Subject]
  doNothing().when(subject).login(new UsernamePasswordToken())

   #2
  val subject = mock[Subject]
  doNothing().when(subject).login(any[UsernamePasswordToken])

   #3
  when(subject.login(any[UsernamePasswordToken])).thenAnswer(new Answer[Void]() {
      override def answer(invocation: InvocationOnMock): Void = {
       null:Void
      }

Я продолжаю получать NullPointerException при входе в систему. Моя цель - протестировать метод входа в систему и протестировать некоторые успешные варианты, а также некоторые случаи сбоев, когда этот метод вызывает исключение.

1 ответ

Решение

Поведение по умолчанию в Mockito - ничего не возвращать, если вы не "заглушаете" конкретный метод. Нет необходимости принудительно использовать функцию void() doNothing() так как он ничего не делает по умолчанию.

Другие вопросы по тегам