Ответ 1
вы должны использовать макет, когда будете проверять, что что-то произошло на объекте, как вызван метод. Вы должны использовать заглушку, когда хотите, чтобы объект был вовлечен в тест, чтобы вернуть значение, но это не то, что вы тестируете. Штук, который не имеет ожидаемого исполнения, никогда не сможет пропустить тест.
Я думаю, что общее правило должно состоять в том, что в тесте должен быть только один макет, но может иметь несколько заглушек, которые предоставляют информацию макету. Я считаю, что более 1 макета в тесте - это запах кода.
Хотя не пример Rhino Мартин Фаулер имеет описание разницы
Также этот вопрос может быть полезен, как может этот