2010-01-21 8 views
1

Utilisation RhinoMocks - comment puis-je dire « chaque fois une fonction est appelée à partir de maintenant - il doit retourner une valeur ».RhinoMocks - retour Spécification des fonctions appelées plus tard

Je voudrais dire quelque chose comme ceci:

fakeCalculator.WhenCalled(factory => factory.AddNumbers(1, 2)).Return(3); 

Et puis - lorsque la fonction est appelée avec AddNumbers 1 et 2 - il retournera 3. à savoir Je veux définir cela à l'avance, puis déclencher la fonction. La raison en est que je dépend de ce comportement pour mon simulacre qui est injecté dans une autre classe - qui appellera à nouveau la fonction AddNumbers.

Répondre

1

Quelque chose comme ceci:

MockRepository mocks = new MockRepository(); 
IFactory factory = mocks.DynamicMock<IFactory>(); 

using(mocks.Record()) { 
    factory.AddNumbers(1, 2); 
    LastCall.Return(3); 

    factory.AddNumbers(2, 3); 
    LastCall.Return(5); 
} 

int result = factory.AddNumbers(1, 2); 
Assert.AreEqual(3, result); 

result = factory.AddNumbers(2, 3); 
Assert.AreEqual(5, result); 
+0

Exactement comme ça. THX! N'a pas utilisé la fonction d'enregistrement avant .. – stiank81

+1

@ stiank81: C'est une caractéristique assez douce. Vous pouvez également dire 'LastCall.Throw (UneException)' 'ou LastCall.Do (someDelegate)' vraiment avoir du plaisir. – jason

+0

Cool, merci Jason! Encore quelques bonnes choses à apprendre en Rhino apparemment! :-) – stiank81

Questions connexes