Что такое 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()для mockSinon.js — mocks, stubs, spies
Для C#
Moq — создание mock-объектов
NSubstitute — альтернативный инструмент для mock/stub
3. Пример использования в тестировании
Stub: при тестировании модуля расчёта скидки stub API платежей возвращает всегда успешный ответ.
Mock: проверка, что модуль уведомлений вызывается ровно один раз после успешного платежа.
Last updated
Was this helpful?