Изучение Mockito: подробное руководство по мокингу списков

При модульном тестировании обычно используются двойники тестов, например макеты, для имитации зависимостей и управления их поведением. Mockito — это популярная платформа для создания макетов для Java, предоставляющая мощные функции для создания макетов и работы с ними. В этой статье мы углубимся в возможности Mockito по созданию списков и рассмотрим несколько методов на примерах кода.

  1. Создание фиктивного списка:
    Чтобы создать фиктивный список с помощью Mockito, вы можете использовать метод mock()и указать желаемый интерфейс или класс списка. Вот пример:
List<String> mockedlist = Mockito.mock(List.class);
  1. Вызовы методов списка заглушек:
    Mockito позволяет заглушать вызовы методов в имитируемом списке, определяя желаемое поведение. Например, вы можете определить возвращаемое значение для определенного вызова метода, используя синтаксис when().thenReturn(). Вот пример:
List<String> mockedlist = Mockito.mock(List.class);
Mockito.when(mockedlist.size()).thenReturn(5);
System.out.println(mockedlist.size()); // Output: 5
  1. Проверка вызовов методов списка.
    Вы также можете проверить, были ли вызваны определенные методы из имитируемого списка во время теста. Для этой цели Mockito предоставляет метод verify(). Вот пример:
List<String> mockedlist = Mockito.mock(List.class);
mockedlist.add("Item");
Mockito.verify(mockedlist).add("Item"); // Verifies that 'add' method was called with argument "Item"
  1. Вызов исключений.
    Mockito позволяет создавать исключения при вызове определенных методов в имитируемом списке. Этого можно добиться, используя синтаксис doThrow(). Вот пример:
List<String> mockedlist = Mockito.mock(List.class);
Mockito.doThrow(new RuntimeException()).when(mockedlist).clear();
mockedlist.clear(); // Throws a RuntimeException
  1. Поведение списков насмешек с сопоставлениями:
    Mockito предоставляет средства сопоставления, которые позволяют вам указать более гибкое сопоставление аргументов. Например, вы можете использовать средство сопоставления anyInt()для сопоставления любого целочисленного аргумента. Вот пример:
List<String> mockedlist = Mockito.mock(List.class);
Mockito.when(mockedlist.get(Mockito.anyInt())).thenReturn("MockedItem");
System.out.println(mockedlist.get(1)); // Output: "MockedItem"

Mockito — это мощная среда создания макетов, упрощающая создание и манипулирование макетами объектов. В этой статье мы рассмотрели несколько методов создания макетов списков с использованием Mockito, включая создание макетов, заглушку вызовов методов, проверку вызовов, выдачу исключений и использование сопоставлений. Используя эти методы, вы можете эффективно протестировать код, взаимодействующий со списками, и обеспечить желаемое поведение.