Есть три способа:
Вы можете сбросить ожидания, используя BackToRecord
Я должен признать, что никогда не использовал его, потому что это неловко.
// clear expectations, an enum defines which
_stubRepository.BackToRecord(BackToRecordOptions.All);
// go to replay again.
_stubRepository.Replay();
Редактировать: Теперь я использую его иногда, это на самом деле самый чистый способ. Должен быть метод расширения (например, Stub), который делает это - я думаю, что он просто забыт. Я бы предложил написать свой.
Вы можете использовать Repeat.Any ()
Он «нарушает» порядок определения-заглушки и «переопределяет» предыдущие определения. Но это как-то неявно. Я использую это иногда, потому что это легко написать.
_stubRepository.Stub(x => x.Contains(null))
.IgnoreArguments()
.Return(false)
.Repeat.Any();
Вы можете создать новый макет
Тривиально, но явно и легко понять. Это проблема, только если вы хотите сохранить множество определений и изменить только один вызов.
_stubRepository = MockRepository.GenerateMock<IRepository>();
_stubRepository.Stub(x => x.Contains(null))
.IgnoreArguments()
.Return(false);