Mockito Verify Cookbook

1. Общ преглед

Тази готварска книга илюстрира как да използвате Mockito за проверка в различни случаи.

В формата на готварската книга е пример фокусирани и практично - без излишни подробности и обяснения необходими.

Ще се подиграем на едно просто изпълнение на списъка :

public class MyList extends AbstractList { @Override public String get(final int index) { return null; } @Override public int size() { return 0; } } 

2. Готварската книга

проверете просто извикване при макет

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList).size();

проверете броя на взаимодействията с макет

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList, times(1)).size();

проверете дали не е настъпило взаимодействие с целия макет

List mockedList = mock(MyList.class); verifyZeroInteractions(mockedList);

проверете дали не е настъпило взаимодействие с конкретен метод

List mockedList = mock(MyList.class); verify(mockedList, times(0)).size();

проверете дали няма неочаквани взаимодействия - това трябва да се провали:

List mockedList = mock(MyList.class); mockedList.size(); mockedList.clear(); verify(mockedList).size(); verifyNoMoreInteractions(mockedList);

проверете реда на взаимодействия

List mockedList = mock(MyList.class); mockedList.size(); mockedList.add("a parameter"); mockedList.clear(); InOrder inOrder = Mockito.inOrder(mockedList); inOrder.verify(mockedList).size(); inOrder.verify(mockedList).add("a parameter"); inOrder.verify(mockedList).clear();

проверете дали не е настъпило взаимодействие

List mockedList = mock(MyList.class); mockedList.size(); verify(mockedList, never()).clear();

проверете дали взаимодействието е възникнало поне определен брой пъти

List mockedList = mock(MyList.class); mockedList.clear(); mockedList.clear(); mockedList.clear(); verify(mockedList, atLeast(1)).clear(); verify(mockedList, atMost(10)).clear();

проверете взаимодействието с точен аргумент

List mockedList = mock(MyList.class); mockedList.add("test"); verify(mockedList).add("test");

проверете взаимодействието с гъвкав / всеки аргумент

List mockedList = mock(MyList.class); mockedList.add("test"); verify(mockedList).add(anyString());

проверете взаимодействието с помощта на улавяне на аргументи

List mockedList = mock(MyList.class); mockedList.addAll(Lists. newArrayList("someElement")); ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(List.class); verify(mockedList).addAll(argumentCaptor.capture()); List capturedArgument = argumentCaptor.
    
      getValue(); assertThat(capturedArgument, hasItem("someElement"));
    

3. Заключение

Този формат е експеримент - публикувам някои от моите готварски книги за вътрешна разработка по дадена тема - в Google Guava, Hamcrest и сега Mockito . Целта е тази информация да бъде лесно достъпна онлайн - и да се добавя към нея, когато попадна на нов полезен пример.

Внедряването на всички тези примери и кодови фрагменти може да бъде намерено в GitHub - това е проект, базиран на Maven, така че трябва да е лесно да се импортира и да се изпълнява както е.