2010-03-18 3 views
21

Si j'ai un objet Rhino Mock qui a déjà créé un appel stub déclaré à ce sujet comme celui-ci:Comment remplacer un appel de bout de ligne déjà déclaré par un appel de bout différent?

mockEmploymentService.Stub(x => x.GetEmployment(999)).Return(employment); 

Y at-il de toute façon je peux retirer cet appel pour le remplacer par quelque chose de différent, par exemple:

mockEmploymentService.Stub(x => x.GetEmployment(999)).Return(null); 

La raison pour laquelle je pose la question est que je veux mettre en place des simulacres génériques à utiliser dans des tests unitaires multiples et ensuite permettre à chaque test unitaire d'adapter les appels si nécessaire.

Répondre

18

J'utilise cette méthode d'extension pour effacer le comportement des talons (ou le comportement + attentes des simulacres):

public static class RhinoExtensions 
{ 
    /// <summary> 
    /// Clears the behavior already recorded in a Rhino Mocks stub. 
    /// </summary> 
    public static void ClearBehavior<T>(this T stub) 
    { 
     stub.BackToRecord(BackToRecordOptions.All); 
     stub.Replay(); 
    } 
} 

Je pris que contre this other stackoverflow answer, ou peut-être il était this one.

+2

Merci Wim, le seul problème est qu'il effacerait tous les appels de bout donc je devrais les réinitialiser tous plutôt que remplacer juste celui qui m'intéresse. –

10

J'utilise les méthodes Repeat.Once() ou Repeat.Times(x) où elle se déplace sur le prochain stub \ expectation lorsque la limite a été atteinte.

Questions connexes