Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
01 Фев 2024
2 мин
216

Использование Mockito для создания «частичных» моков в Java

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

Одной из распространенных задач при тестировании кода на Java является создание моковых объектов. Инструментом, который позволяет это делать, является библиотека Mockito. В некоторых случаях может возникнуть необходимость создать «частичный» мок, то есть моковый объект, который имитирует поведение некоторых методов в классе, но не других.

Рассмотрим типичный пример. Пусть у нас есть класс Product с методами getPrice(), getQuantity() и getValue(). Метод getValue() вычисляет и возвращает произведение цены и количества продукта.

public class Product {
  private final double price;
  private final int quantity;

  Product(double price, int quantity) {
    this.price = price;
    this.quantity = quantity;
  }

  public double getPrice() {
    return price;
  }

  public int getQuantity() {
    return quantity;
  }
  public double getValue() {
    return getPrice() * getQuantity();
  }
}

Теперь, если мы хотим протестировать метод getValue(), нам нужно создать моковый объект класса Product. Однако, мы хотим, чтобы методы getPrice() и getQuantity() возвращали моковые значения, а метод getValue() выполнялся как обычно.

Вот как это можно сделать с помощью Mockito:

@Test
public void getValueTest() {
  Product product = mock(Product.class, CALLS_REAL_METHODS);
  when(product.getPrice()).thenReturn(100.00);
  when(product.getQuantity()).thenReturn(200);
  double value = product.getValue();
  assertEquals(100.00*200, value, .00001);
}

В этом примере используется метод mock(), который принимает два аргумента: класс, который нужно замокать, и дополнительные настройки. В данном случае используется константа CALLS_REAL_METHODS, которая указывает Mockito вызывать реальные методы, если они не были замоканы.

Таким образом, с помощью Mockito можно создавать «частичные» моки и выбирать, какие методы класса должны быть замоканы, а какие нет.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий