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 93

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