Как проверить, что метод вызывается два раза с помощью mockito verify ()

307

Я хочу проверить, если метод вызывается хотя бы один раз через проверку mockito. Я использовал проверить, и он жалуется, как это:

org.mockito.exceptions.verification.TooManyActualInvocations: 
Wanted 1 time:
But was 2 times. Undesired invocation:
Ахмад Бег
источник

Ответы:

519

Используя соответствующий VerificationMode:

import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

verify(mockObject, atLeast(2)).someMethod("was called at least twice");
verify(mockObject, times(3)).someMethod("was called exactly three times");
Liosan
источник
22
Вы также можете использовать Mockito.times(...)вместо VerificationModeFactory.times(...)статического импорта
Вим Deblauwe
26
import static org.mockito.Mockito.times;, Как правило, импорт пакетов с «внутренним» в них ( import static org.mockito.internal.verification.VerificationModeFactory.times;) не рекомендуется.
Роджер
Есть ли другой способ записи раз (1)?
Гленн Бек,
1
@GlennBech Вы можете просто пропустить это , это неявно; по умолчанию verify(mockObject).someMethod("")ищет ровно 1 взаимодействие (не больше, не меньше). Если вместо этого вы хотите хотя бы один вызов метода, вы можете использовать atLeastOnce()спецификатор.
nbrooks
1
@ Роджер Я согласен с вами, для начинающего специалиста по TDD, такого как я, статический импорт заставляет меня больше запутываться в запоминании методов или того, какой фреймворк используется (Mockito, Espresso или просто обычный модульный тест).
Подумай дважды, один раз