Необхідний метод - 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;
Тож у вашому випадку правильним буде синтаксис:
Mockito.verify(mock, times(4)).send()
Це підтверджує, що метод send
був викликаний 4 рази на макетному об'єкті. Він вийде з ладу, якщо його зателефонували менше або більше 4 разів.
Якщо ви просто хочете перевірити, чи метод був викликаний один раз, вам не потрібно передавати VerificationMode
. Простий
verify(mock).someMethod("was called once");
вистачило б Він внутрішньо використовує verify(mock, times(1)).someMethod("was called once");
.
Для того, щоб домогтися верифікації "між", можна зробити кілька дзвінків підтвердження на один і той же макет. Mockito не підтримує щось подібне verify(mock, between(4,6)).someMethod("was called between 4 and 6 times");
, але ми можемо писати
verify(mock, atLeast(4)).someMethod("was called at least four times ...");
verify(mock, atMost(6)).someMethod("... and not more than six times");
натомість отримати таку саму поведінку. Межі включені , тому тестовий випадок зелений, коли метод називався 4, 5 або 6 разів.
Mockito.verify(mock, times(4)).send()
. Цікаво, чому ви "перемістили"send()
виклик методу всерединіverify
методу. Ви вже мали правильний синтаксис.