Java проверяет вызовы метода void n раз с помощью Mockito
Я пытаюсь проверить, что метод (void) вызывается внутри DAO - я использую точку фиксации, которая отправляет список результатов до этого момента, сбрасывает список и продолжает. Скажем, у меня есть 4 вещи в списке, и у меня есть точка фиксации 1, я ожидал бы, что метод "send" будет вызван 4 раза. Я могу проверить, что метод вызывается один раз при написании
Mockito.verify(mock).send()
Она проходит.. но я хочу проверить, сколько раз он был вызван. Я думаю это
Mockito.verify(mock.send(), times(4))
было бы достаточно, но он говорит, что параметры не верны для проверки.
кстати, если я изменю Mockito.verify(mock).send()
до Mockito.verify(mock.send())
или Mockito.verify((mock).send())
Я получаю ту же ошибку. Мысли об этом?
1 ответ:
необходимый метод Mockito#verify:
public static <T> T verify(T mock, VerificationMode mode)
mock
это ваш издевались объект иmode
- этоVerificationMode
это описывает, как макет должен быть проверен. возможные режимы:verify(mock, times(5)).someMethod("was called five times"); verify(mock, never()).someMethod("was never called"); verify(mock, atLeastOnce()).someMethod("was called at least once"); verify(mock, atLeast(2)).someMethod("was called at least twice"); verify(mock, atMost(3)).someMethod("was called at most 3 times"); verify(mock, atLeast(0)).someMethod("was called any number of times"); // useful with captors verify(mock, only()).someMethod("no other method has been called on the mock");
вам понадобятся эти статические импорта из
Mockito
класс для того, чтобы использоватьverify
метод и эти режимы проверки:import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atMost; import static org.mockito.Mockito.never; import static org.mockito.Mockito.only; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify;
(класс
VerificationModeFactory
также обеспечивает упомянутые режимы проверки. Таким образом, вы также можете использовать этот класс для статического импорта.)поэтому в вашем случае правильный синтаксис будет:
Mockito.verify(mock, times(4)).send()
это подтверждает, что метод
send
называлась 4 раз издевались над объектом. Он потерпит неудачу, если он был вызван менее или более 4 раз.
если вы просто хотите проверить, если метод был вызван один раз, то вы не нужно пройти
VerificationMode
. Один простоverify(mock).someMethod("was called once");
будет достаточно. Он внутренне использует
verify(mock, times(1)).someMethod("was called once");
.