Junior
47
0
questionbank

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

Ответ от нейросети sobes.tech

Mock-объект (мок) — это имитация реального объекта или зависимости в модульном тесте. Он используется для изоляции тестируемого компонента путем замены его зависимостей подконтрольными заглушками.

Основные цели использования моков:

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

Типы "двойников" в тестировании (заглушек, моков и т.д.):

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

Библиотеки для создания моков в Java:

  • Mockito
  • EasyMock
  • PowerMock (для статических, приватных методов и конструкторов)

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

java

Mock-объект (мок) — это имитация реального объекта или зависимости в модульном тесте. Он используется для изоляции тестируемого компонента путем замены его зависимостей подконтрольными заглушками.

Основные цели использования моков:

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

Типы "двойников" в тестировании (заглушек, моков и т.д.):

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

Библиотеки для создания моков в Java:

  • Mockito
  • EasyMock
  • PowerMock (для статических, приватных методов и конструкторов)

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

java

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

testingunit-testingmockingstubtest-doubles