Mock vs. Stub vs. Spy

Mock

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

Основная функция использования имитаторов заключается в том, что они дают полный контроль над поведением имитируемых объектов. Моки (имитаторы) обычно используются для проверки поведения. Термин "поведение" означает проверку правильности методов и путей, применяемых к объектам.

Stub

Заглушки - это объекты, которые хранят предопределенные данные и используют их для выдачи ответов во время тестирования. Другими словами, заглушка - это объект, похожий на реальный объект с минимальным количеством методов, необходимых для теста. Заглушки используются, когда мы не хотим использовать объекты, которые могли бы дать ответ с реальными данными. Заглушку называют самой легкой и статичной версией теста-двойника.

Основными функциями заглушек являются:

  • Она всегда возвращает предопределенный выходной сигнал независимо от входных данных.
  • Её можно использовать для уподобления объектов базы данных. 
  • Заглушки используются для уменьшения сложностей, возникающих при создании реальных объектов. В основном они используются для выполнения проверки состояния.

Spy

Шпионы известны как частично имитирующие объекты. Это означает, что шпион создает частичный объект или полуманекен реального объекта, используя заглушки или шпионаж реальных объектов. При шпионаже реальный объект остается неизменным, и мы просто шпионим за некоторыми его специфическими методами. Другими словами, мы берем существующий (реальный) объект и заменяем или шпионим только за некоторыми его методами.

Шпионы полезны, когда у нас есть огромный класс, полный методов, и мы хотим сымитировать определенные методы. В этом сценарии лучше использовать шпионов, а не макеты и заглушки. Он вызывает поведение реального метода, если методы не являются заглушками.

Разница между Stub и Mock

ПараметрыStub (заглушка) Mock (имитатор)
Источник данныхИсточник данных в заглушках жестко закодирован. Обычно он тесно связан с набором тестов.Данные на макетах задаются тестами.
Создаются дляЗаглушки обычно пишутся от руки, а некоторые создаются с помощью инструментов.Моки обычно создаются с помощью сторонних библиотек
ИспользованиеЗаглушки в основном используются для простых тестовых наборов.Моки в основном используются для больших тестовых наборов.
Графический интерфейс пользователя (GUI)Заглушки не имеют графического интерфейса.Моки имеют графический интерфейс.

Разница между Stub и Spy

Ниже перечислены некоторые различия между mock(подделка) и шпионом(spy):

ПараметрыStub (заглушка) Spy (шпион)
ИспользованиеМоки используются для создания полностью имитируемых или фиктивных объектов. В основном они используются в больших наборах тестов.Шпионы используются для создания частичного или половинного имитатора объектов. Как и моки, шпионы также используются в больших наборах тестов.
Поведение по умолчаниюПри использовании mock-объектов поведение методов по умолчанию (когда они не заглушены stubbed) - do nothing (ничего не выполняет).При использовании объектов-шпионов поведение методов по умолчанию (когда они не заглушены) является поведением настоящего метода.
Написать комментарий