Поиск по сайту:

Мокито Подтвердить


Методы Mockito Verify используются для проверки того, что произошло определенное поведение. Мы можем использовать методы проверки Mockito в конце кода метода тестирования, чтобы убедиться, что указанные методы вызываются.

Мокито Подтвердить

  • Метод Mockito verify() также можно использовать для проверки количества вызовов метода. Мы можем проверить точное количество раз, по крайней мере, один раз, по крайней мере, не более, чем количество вызовов для фиктивного метода.
  • Мы можем использовать verifyNoMoreInteractions() после всех вызовов метода verify(), чтобы убедиться, что все проверено. Если какая-либо проверка метода все еще остается, она завершится ошибкой и выдаст соответствующее сообщение.
  • Поведение
  • verifyZeroInteractions() такое же, как и у метода verifyNoMoreInteractions().
  • Можно использовать метод inOrder() для проверки порядка вызова методов. Мы можем пропустить вызов метода, но проверяемые методы должны быть в том же порядке.

Давайте посмотрим на некоторые примеры методов проверки mockito.

Mockito verify() простой пример

@Test
void test() {
	List<String> mockList = mock(List.class);
	mockList.add("Pankaj");
	mockList.size();
	
	verify(mockList).add("Pankaj");
}

Вышеупомянутый метод проверки пройдет, если add(Pankaj) вызывается только один раз для фиктивного объекта списка. Это то же самое, что и вызов с аргументом times(1) в методе проверки.

verify(mockList, times(1)).size();

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

verify(mockList).add(anyString());
verify(mockList).add(any(String.class));
verify(mockList).add(ArgumentMatchers.any(String.class));

Обратите внимание, что класс org.mockito.Mockito предоставляет статические методы для большинства полезных методов в среде Mockito, это помогает нам писать плавный код, импортируя их с помощью import static.

Mockito проверяет несколько раз

Метод Mockito verify() перегружен, второй — verify(T mock, режим VerificationMode). Мы можем использовать его для проверки количества вызовов.

verify(mockList, times(1)).size(); //same as normal verify method
verify(mockList, atLeastOnce()).size(); // must be called at least once
verify(mockList, atMost(2)).size(); // must be called at most 2 times
verify(mockList, atLeast(1)).size(); // must be called at least once
verify(mockList, never()).clear(); // must never be called

проверитьNoMoreInteractions()

Этот метод можно использовать после всех методов проверки, чтобы убедиться, что все взаимодействия проверены. Он не пройдет тест, если есть какие-либо непроверенные взаимодействия с имитируемым объектом.

// all interactions are verified, so below will pass
verifyNoMoreInteractions(mockList);
mockList.isEmpty();
// isEmpty() is not verified, so below will fail
verifyNoMoreInteractions(mockList);

Второй вызов verifyNoMoreInteractions() завершится ошибкой с сообщением об ошибке:

org.mockito.exceptions.verification.NoInteractionsWanted: 
No interactions wanted here:
-> at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:36)
But found this interaction on mock 'list':
-> at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:34)
***
For your reference, here is the list of all invocations ([?] - means unverified).
1. -> at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:18)
2. -> at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:19)
3. [?]-> at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:34)

Одной из замечательных особенностей Mockito является сообщение об исключении, оно четко указывает, где наш тест дает сбой, чтобы мы могли легко это исправить.

проверить ноль взаимодействий()

Поведение метода verifyZeroInteractions() такое же, как и у метода verifyNoMoreInteractions().

Map mockMap = mock(Map.class);
Set mockSet = mock(Set.class);
verify(mockList).isEmpty();
verifyZeroInteractions(mockList, mockMap, mockSet);

Mockito проверяет только вызов метода

Если мы хотим убедиться, что вызывается только один метод, мы можем использовать only() с методом проверки.

Map mockMap = mock(Map.class);
mockMap.isEmpty();
verify(mockMap, only()).isEmpty();

Mockito Проверить порядок вызова

Мы можем использовать InOrder для проверки порядка вызова. Мы можем пропустить любой метод для проверки, но проверяемые методы должны вызываться в том же порядке.

InOrder inOrder = inOrder(mockList, mockMap);
inOrder.verify(mockList).add("Pankaj");
inOrder.verify(mockList, calls(1)).size();
inOrder.verify(mockList).isEmpty();
inOrder.verify(mockMap).isEmpty();

Резюме

Методы Mockito verify() можно использовать, чтобы убедиться, что вызываются методы фиктивного объекта. Если какой-либо вызов метода будет удален по ошибке, метод проверки вызовет ошибку.

Вы можете посмотреть другие примеры Mockito в нашем репозитории GitHub.