Подтвердить что ты не робот

В RSpec, какая разница между макетом и двойным?

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

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

4b9b3361

Ответ 1

Оба mock и stub являются псевдонимами более общего double. Подобно context и describe, их можно использовать взаимозаменяемо, чтобы сделать назначение спецификаций более понятным. Это описано более подробно в RSpec Book.

Ответ 2

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

Ответ 3

дубли

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

окурка

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

Mocks

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