Мок (mock) — это объект-заглушка, полностью имитирующий поведение реального зависимого компонента или сервиса в тестовой среде. Он позволяет контролировать возвращаемые значения методов зависимостей и проверять, как тестируемый код с ними взаимодействует.
Основные отличия от других тестовых заглушек (Stubs, Fakes):
- Stub (заглушка): Предоставляет предопределенные ответы на вызовы методов, но не проверяет взаимодействие.
- Fake (фейк): Имеет работающую, но упрощенную реализацию зависимого компонента.
- Mock (мок): Имитирует поведение, предоставляет предопределенные ответы и, самое главное, позволяет верифицировать, как тестируемый код взаимодействовал с этим объектом (например, какие методы были вызваны, сколько раз, с какими аргументами).
Назначения:
- Изоляция тестируемого кода от внешних зависимостей (баз данных, внешних сервисов, файловой системы и т.д.).
- Ускорение выполнения тестов.
- Тестирование граничных случаев и обработки ошибок, которые сложно воспроизвести с реальными зависимостями.
- Верификация ожидаемого взаимодействия между объектами.
Пример использования с Mockito:
java
Мок (mock) — это объект-заглушка, полностью имитирующий поведение реального зависимого компонента или сервиса в тестовой среде. Он позволяет контролировать возвращаемые значения методов зависимостей и проверять, как тестируемый код с ними взаимодействует.
Основные отличия от других тестовых заглушек (Stubs, Fakes):
- Stub (заглушка): Предоставляет предопределенные ответы на вызовы методов, но не проверяет взаимодействие.
- Fake (фейк): Имеет работающую, но упрощенную реализацию зависимого компонента.
- Mock (мок): Имитирует поведение, предоставляет предопределенные ответы и, самое главное, позволяет верифицировать, как тестируемый код взаимодействовал с этим объектом (например, какие методы были вызваны, сколько раз, с какими аргументами).
Назначения:
- Изоляция тестируемого кода от внешних зависимостей (баз данных, внешних сервисов, файловой системы и т.д.).
- Ускорение выполнения тестов.
- Тестирование граничных случаев и обработки ошибок, которые сложно воспроизвести с реальными зависимостями.
- Верификация ожидаемого взаимодействия между объектами.
Пример использования с Mockito:
java