Есть ли эквивалент verifyZeroInteractions () для проверки точного числа взаимодействий с фиктивным объектом? - PullRequest
0 голосов
/ 24 апреля 2019

Я хотел бы убедиться, что было точно x взаимодействий с могущественным объектом db. Для этого есть что-то похожее на метод verifyZeroInteractions ()?

Ответы [ 4 ]

4 голосов
/ 24 апреля 2019
Mockito.verify(MOCKED_OBJ, Mockito.times(number)).YOUR_METHOD_CALL();

Mockito.verify(MOCKED_OBJ, Mockito.atLeast(number)).YOUR_METHOD_CALL();

Более подробная информация здесь

1 голос
/ 24 апреля 2019

В соответствии с mockito doc вы можете использовать verify(mockedList, never()).add("never happened");.

Существует множество полезных комбинаций для проверки вашего ожидаемого поведения.Другой пример из Mockito doc:

//using mock
mockedList.add("once");

mockedList.add("twice");
mockedList.add("twice");

mockedList.add("three times");
mockedList.add("three times");
mockedList.add("three times");

//following two verifications work exactly the same - times(1) is used by default
verify(mockedList).add("once");
verify(mockedList, times(1)).add("once");

//exact number of invocations verification
verify(mockedList, times(2)).add("twice");
verify(mockedList, times(3)).add("three times");

//verification using never(). never() is an alias to times(0)
verify(mockedList, never()).add("never happened");

//verification using atLeast()/atMost()
verify(mockedList, atLeastOnce()).add("three times");
verify(mockedList, atLeast(2)).add("three times");
verify(mockedList, atMost(5)).add("three times");

Или вы можете использовать verifyNoMoreInteractions, чтобы не допустить никакого другого взаимодействия с вами.

//using mocks
mockedList.add("one");
mockedList.add("two");

verify(mockedList).add("one");

//following verification will fail
verifyNoMoreInteractions(mockedList);

В дополнении вы можете использовать inOrder для проверки взаимодействия нескольких mockв том же порядке и добавьте verifyNoMoreInteractions (), чтобы убедиться, что нет других взаимодействий, как определено с вашими макетами.

InOrder inOrder = inOrder(firstMock, secondMock);
inOrder.verify(firstMock).add("was called first");
inOrder.verify(secondMock).add("was called second");
inOrder.verifyNoMoreInteractions();

Проверьте, что Mockito doc чувствует всю мощь mockito: https://static.javadoc.io/org.mockito/mockito-core/2.27.0/org/mockito/Mockito.html

См. Также https://static.javadoc.io/org.mockito/mockito-core/2.27.0/org/mockito/Mockito.html#4 https://static.javadoc.io/org.mockito/mockito-core/2.27.0/org/mockito/Mockito.html#8

0 голосов
/ 24 апреля 2019

или еще более элегантно

verify(MOCK, never()).method()
0 голосов
/ 24 апреля 2019

Вы можете использовать Mockito.verify() метод, передавая Mockito.times(...) или Mockito.atLeast(..) в качестве аргумента.

...