Мой очень упрощенный ответ:
- mocks - это объекты, которые имеют интерфейс, похожий на что-то еще
- заглушки являются поддельными методами и возвращают конкретный ответ
С обоими мы пытаемся достичь одного и того же: мы хотим протестировать определенный модуль (модель / вид / контроллер / модуль) изолированно. Например. когда мы тестируем контроллер, мы не хотим тестировать нашу модель, поэтому мы используем макет. Мы хотим убедиться, что вызываются правильные методы, например, find
. Таким образом, в нашем макете у нас есть заглушка, которая будет возвращать что-то предопределенное, без фактического перехода в базу данных.
Итак, мы проверяем ожидания: методы, которые мы ожидаем вызвать (в других единицах), фактически не вызывая их. Испытание этого конкретного метода должно было быть рассмотрено в его собственном испытании.