В RSpec какая разница между макетом и двойником? - PullRequest
35 голосов
/ 09 сентября 2011

В rspec вы можете создать mock или double. Эти два, кажется, почти то же самое, и я не могу найти ничего в документации, которая устраняет их неоднозначность.

Какая разница?

Ответы [ 3 ]

38 голосов
/ 09 сентября 2011

И mock, и stub являются псевдонимами более общего double. Как и context и describe, они могут использоваться взаимозаменяемо, чтобы сделать назначение спецификаций более ясным. Более подробно это описано в Книге RSpec .

2 голосов
/ 09 сентября 2011

Кажется, что это просто псевдонимы , поскольку :__declared_as, кажется, не используется, но для сообщений.

1 голос
/ 13 марта 2014

удваивает

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

заглушка

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

Mocks

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...