Junior
29
0
questionbank

Что такое мок (mock) в тестировании?

Answer from sobes.tech neural network

Мок (mock) — это объект-заглушка, полностью имитирующий поведение реального зависимого компонента или сервиса в тестовой среде. Он позволяет контролировать возвращаемые значения методов зависимостей и проверять, как тестируемый код с ними взаимодействует.

Основные отличия от других тестовых заглушек (Stubs, Fakes):

  • Stub (заглушка): Предоставляет предопределенные ответы на вызовы методов, но не проверяет взаимодействие.
  • Fake (фейк): Имеет работающую, но упрощенную реализацию зависимого компонента.
  • Mock (мок): Имитирует поведение, предоставляет предопределенные ответы и, самое главное, позволяет верифицировать, как тестируемый код взаимодействовал с этим объектом (например, какие методы были вызваны, сколько раз, с какими аргументами).

Назначения:

  • Изоляция тестируемого кода от внешних зависимостей (баз данных, внешних сервисов, файловой системы и т.д.).
  • Ускорение выполнения тестов.
  • Тестирование граничных случаев и обработки ошибок, которые сложно воспроизвести с реальными зависимостями.
  • Верификация ожидаемого взаимодействия между объектами.

Пример использования с Mockito:

java

Мок (mock) — это объект-заглушка, полностью имитирующий поведение реального зависимого компонента или сервиса в тестовой среде. Он позволяет контролировать возвращаемые значения методов зависимостей и проверять, как тестируемый код с ними взаимодействует.

Основные отличия от других тестовых заглушек (Stubs, Fakes):

  • Stub (заглушка): Предоставляет предопределенные ответы на вызовы методов, но не проверяет взаимодействие.
  • Fake (фейк): Имеет работающую, но упрощенную реализацию зависимого компонента.
  • Mock (мок): Имитирует поведение, предоставляет предопределенные ответы и, самое главное, позволяет верифицировать, как тестируемый код взаимодействовал с этим объектом (например, какие методы были вызваны, сколько раз, с какими аргументами).

Назначения:

  • Изоляция тестируемого кода от внешних зависимостей (баз данных, внешних сервисов, файловой системы и т.д.).
  • Ускорение выполнения тестов.
  • Тестирование граничных случаев и обработки ошибок, которые сложно воспроизвести с реальными зависимостями.
  • Верификация ожидаемого взаимодействия между объектами.

Пример использования с Mockito:

java

Register or sign in to get access to full answers for all questions from the question bank.

mocktestingunit-teststest-doublessoftware-design