Автор оригинала: Pankaj Kumar.
Методы проверки Mockito используются для проверки того, что произошло определенное поведение. Мы можем использовать методы проверки Mockito в конце кода метода тестирования, чтобы убедиться, что указанные методы вызываются.
Mockito Проверить
- Метод Mockito verify() также может быть использован для проверки количества вызовов методов. Мы можем проверить точное количество раз, по крайней мере один раз, по крайней мере, не более одного раза вызова для издевательского метода.
- Мы можем использовать
verifyNoMoreInteractions()
после всех вызовов метода verify (), чтобы убедиться, что все проверено. Если какая-либо проверка метода все еще остается, она завершится ошибкой и выдаст соответствующее сообщение. verifyZeroInteractions()
поведение такое же, какverifyNoMoreInteractions()
метод.- Мы можем использовать метод
inOrder()
для проверки порядка вызова метода. Мы можем пропустить вызов метода, но проверяемые методы должны быть в том же порядке.
Давайте рассмотрим некоторые примеры метода проверки mockito.
Простой пример проверки Mockito()
@Test void test() { ListmockList = mock(List.class); mockList.add("Pankaj"); mockList.size(); verify(mockList).add("Pankaj"); }
Выше метод проверки пройдет, если add("Pankaj")
вызывается только один раз для объекта mockedlist.
Это то же самое, что вызывать с аргументом times(1)
с помощью метода verify.
verify(mockList, times(1)).size();
Если мы хотим убедиться, что метод вызван, но нас не волнует аргумент, мы можем использовать сопоставители аргументов с методом проверки.
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 () перегружен , второй – проверка(T макет, режим проверки)
. Мы можем использовать его для проверки количества вызовов.
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
Верифиномореактивности()
Этот метод можно использовать после всех методов проверки, чтобы убедиться, что все взаимодействия проверены. Он не пройдет тест, если на издевательском объекте будут какие-либо непроверенные взаимодействия.
// 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 проверяет только вызов метода
Если мы хотим убедиться, что вызывается только один метод, мы можем использовать только()
с методом проверки.
Map mockMap = mock(Map.class); mockMap.isEmpty(); verify(mockMap, only()).isEmpty();
Mockito Проверяет порядок вызова
Мы можем использовать Для того, чтобы
проверить порядок вызова. Мы можем пропустить любой метод для проверки, но проверяемые методы должны вызываться в том же порядке.
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() можно использовать, чтобы убедиться, что вызываются методы макетного объекта. Если какой-либо вызов метода удален по ошибке, то метод проверки выдаст ошибку.