RhinoMocks на самом деле очень универсален, вы можете использовать любой подход. RhinoMocks выглядит немного лучше, чем Moq в стиле ожидания / проверки. Тем не менее, даже тот факт, что вы можете использовать этот стиль, скрыт в документации (в прошлый раз, когда я смотрел). Мы выбрали Moq вместо RhinoMocks в моем текущем проекте, потому что мы не понимали, что он настраивает / проверяет.
Синтаксис записи / воспроизведения дает вам возможность изменить значение, которое метод будет возвращать при последующих вызовах этого метода. Это может быть полезно иногда. Сказав это, необходимость сделать это часто пахнет, что ваш дизайн не совсем правильно. Это полезно, когда вы можете понять, что не так, и вам нужно идти дальше.
У Moq есть возможность изменить значение, но оно несколько неуклюже (из документации)
// returning different values on each invocation
var mock = new Mock<IFoo>();
var calls = 0;
mock.Setup(foo => foo.GetCountThing())
.Returns(() => calls)
.Callback(() => calls++);