Как проверить, что метод вызывается два раза с помощью 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");

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 или просто обычный модульный тест).
Подумай дважды, один раз
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.