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()
так как он ничего не делает по умолчанию.