Что такое mock/stub? Какие знаете инструменты для работы с ними?

1. Что такое Mock и Stub

A. Stub

  • Что делает: возвращает заранее определённые данные при вызове метода/функции.

  • Цель: изолировать тестируемый модуль от внешних зависимостей.

  • Пример: API, которое всегда возвращает фиксированный JSON вместо реального ответа.

B. Mock

  • Что делает: имитирует поведение объекта и позволяет проверять вызовы, аргументы и количество обращений.

  • Цель: тестировать не только результат, но и взаимодействие с зависимыми компонентами.

  • Пример: Проверка, что метод sendEmail() был вызван ровно один раз с корректными параметрами.

Кратко: stub — для данных, mock — для поведения и взаимодействия.


2. Инструменты и библиотеки

Для Java

  • Mockito — создание mock и stub объектов

  • EasyMock — упрощённое создание mocks

  • PowerMock — для сложных случаев, статические методы и конструкторы

Для Python

  • unittest.mock — стандартная библиотека для mocks/stubs

  • pytest-mock — плагин для pytest, упрощает работу с mock

Для JavaScript

  • Jest — встроенные функции jest.fn() для mock

  • Sinon.js — mocks, stubs, spies

Для C#

  • Moq — создание mock-объектов

  • NSubstitute — альтернативный инструмент для mock/stub


3. Пример использования в тестировании

  • Stub: при тестировании модуля расчёта скидки stub API платежей возвращает всегда успешный ответ.

  • Mock: проверка, что модуль уведомлений вызывается ровно один раз после успешного платежа.

Last updated

Was this helpful?