Il y a trois façons de procéder :
Vous pouvez réinitialiser les attentes en utilisant BackToRecord
Je dois admettre que je ne l'ai jamais vraiment utilisé parce qu'il est peu pratique.
// clear expectations, an enum defines which
_stubRepository.BackToRecord(BackToRecordOptions.All);
// go to replay again.
_stubRepository.Replay();
Edita: Maintenant que je l'utilise parfois, c'est en fait la méthode la plus propre. Il devrait y avoir une méthode d'extension (comme Stub) qui le fait - je pense qu'elle a été oubliée. Je vous suggère d'écrire la vôtre.
Vous pouvez utiliser Repeat.Any()
Il "rompt" l'ordre de la définition de l'extrait et "écrase" les définitions précédentes. Mais c'est en quelque sorte implicite. Je l'utilise parfois parce qu'elle est facile à écrire.
_stubRepository.Stub(x => x.Contains(null))
.IgnoreArguments()
.Return(false)
.Repeat.Any();
Vous pouvez créer un nouveau simulacre
Trivial, mais explicite et facile à comprendre. Le problème ne se pose que si l'on souhaite conserver un grand nombre de définitions et ne modifier qu'un seul appel.
_stubRepository = MockRepository.GenerateMock<IRepository>();
_stubRepository.Stub(x => x.Contains(null))
.IgnoreArguments()
.Return(false);