2009-12-15 5 views
3

J'ai une situation que j'ai rencontrée plusieurs fois, mais je n'ai jamais trouvé une bonne réponse. Supposons que j'ai une classe comme suit, où l'on appelle une autre méthode dans la même classe:"Auto-simulacre" en utilisant Rhino Mocks

public class Foo 
{ 
    public int Bar() 
    { 
     if (Baz()) 
     { 
      return 1; 
     } 
     else 
     { 
      return 2; 
     } 
    } 

    public virtual bool Baz() 
    { 
     // behavior to be mocked 
    } 
} 

Je veux tester l'unité en fonction de la valeur de retour de Baz comportement de la méthode Bar()(). Si Baz() était dans une classe différente, j'appellerais PartialMock pour mettre en place un comportement moqueur sur cette classe, mais cela ne semble pas fonctionner lorsque PartialMock est utilisé sur la classe de test elle-même. Y a-t-il un moyen facile de faire ceci? Qu'est-ce que je rate? J'utilise Rhino Mocks 3.5 et .NET 2.0.

Répondre

3

Vous pouvez utiliser des stubs pour simuler la méthode Baz. Si vous utilisez .NET 3.5 que vous souhaitez utiliser lambdas mais avec .NET 2.0 vous souhaitez utiliser les délégués anonymes comme dans l'exemple suivant:

Foo f = MockRepository.GenerateStub<Foo>(); 
// lambda: 
// f.Stub(x => x.Baz()).Return(true); 
// anonymous delegate: 
f.Stub(delegate(Foo x) { return x.Baz(); }).Return(true); 
Console.WriteLine(f.Bar()); 
+0

Je l'ai essayé et il fonctionne exactement comme annoncé. Merci! –

Questions connexes