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