Заглушка
Я считаю, что самое большое различие заключается в том, что заглушку, которую вы уже написали с предопределенным поведением.Таким образом, у вас будет класс, который реализует зависимость (абстрактный класс или интерфейс, скорее всего), которую вы фальсифицируете для целей тестирования, и методы будут просто заглушены заданными ответами.Они не сделали бы ничего необычного, и вы бы уже написали для него заштрихованный код вне вашего теста.
Макет
Макет это то, что как часть вашеготест, который вы должны настроить с вашими ожиданиями.Макет не настроен заранее, поэтому у вас есть код, который делает это в вашем тесте.Мок определенным образом определяется во время выполнения, так как код, который устанавливает ожидания, должен быть выполнен до того, как они что-либо предпримут.
Разница между мобами и заглушками
Тесты, написанные с помощью мотовобычно следуйте шаблону initialize -> set expectations -> exercise -> verify
для тестирования.В то время как предварительно написанная заглушка будет следовать за initialize -> exercise -> verify
.
Сходство между Mocks и Stubs
Цель обоих состоит в том, чтобы исключить тестирование всех зависимостей класса или функции, чтобы ваши тесты были более сфокусированными и более простыми в том, что онипытаемся доказать.