Middle
99
questionbank

Что такое мок и стабы? Чем они отличаются?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Моки и стабы — это типы тестовых дублеров, которые используются при модульном тестировании для имитации поведения реальных зависимостей объекта.

Стаб (Stub):

  • Предоставляет "заст
php

роено" поведение для тестового сценария.

  • Отвечает на вызовы методов, возвращая заранее заданные значения.
  • Не имеет логики проверки взаимодействия. Его цель — обеспечить тестовому объекту данные для продолжения работы.

Мок (Mock):

  • Подобен стабу, но с добавленной логикой проверки взаимодействия.
  • Содержит ожидания относительно того, какие методы должны быть вызваны, сколько раз и с какими аргументами.
  • Тест проверяет не только результат работы тестируемого объекта, но и корректность его взаимодействия с моком.
php

Отличия в таблице:

ХарактеристикаСтаб (Stub)Мок (Mock)
НазначениеПредоставить данные для работыПроверить взаимодействие и данные
ПроверкаНе проверяет взаимодействиеПроверяет, как объект работает с ним
Логика поведенияПросто возвращает значенияСодержит ожидания вызовов
Кто выполняет assertТестируемый объект или клиентСам мок (через ожидания)