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");.