Различия объяснены в этой статье
Если вы не создаете ожидания для StrictMock
, и метод вызывается для макета, будет выдано исключение.
Если вы не создаете ожидания для PartialMock
, и метод вызывается на макете, ничего особенного не происходит. Если эта имитация происходит от базового класса, вызов перенаправляется в существующую базовую реализацию.
Существует также нечто, называемое DynamicMock
. Если вы не создаете ожидания для DynamicMock
, и метод вызывается для макета, вызывается метод-заглушка. Если было возвращаемое значение, возвращается значение по умолчанию (например, null
или 0
).
GenerateMock
Я считаю, что создает DynamicMock
.
Айенде выбрал это значение по умолчанию, потому что он рекомендует использовать только DynamicMock
и Stub
. StrictMock
создает хрупкие тесты и обычно нарушает концепцию проверки только одного поведения за тест.
См. Эту статью: http://ayende.com/wiki/Rhino%20Mocks%203.5.ashx#CreateMockisdeprecated,replacedbyStrictMockTheuseofStrictMockisdiscouraged
Я также видел, как он говорил, что полезно начинать со строгих имитаций и возвращать свои тесты обратно к динамическим имитаторам / заглушкам, как только вы освоитесь с поведением тестируемого кода. Нет ссылки для этого:)