2009-08-18 6 views
6

Comment est-ce que je me moque d'un objet avec un constructeur en utilisant Rhino Mocks?Mock un objet avec un constructeur - Rhino Mocks

Par exemple, comment cet objet serait moqué ...

public class Foo : IFoo 
{ 
    private IBar bar; 
    public Foo (IBar bar) 
    { 
     this.bar = bar 
    } 

    public DoSomeThingAwesome() 
    { 
     //awesomeness happens here 
    } 

} 

Répondre

13

Vous ne vous moquez pas Foo - vous moquez IFoo. Pour tester Foo lui-même, vous simulez IBar et passez le simulacre dans le constructeur.

Vous devriez essayer d'éviter d'avoir des choses qui reposent sur IFoo explicitement construire des instances de Foo: ils doivent être soit donné une usine si IFoo en quelque sorte, ou avoir un IFoo explicitement passé à eux.

+3

Eh bien, c'est évident maintenant que vous l'avez dit. :) –

4
var myIFoo = MockRepository.GenerateStub<IFoo>(); 

vous pouvez vérifier génialité est arrivé via

myIFoo.AssertWasCalled(f => f.DoSomethingAwesome()); 
2

Il faisait longtemps que je Rhino, mais je crois que vous pouvez faire:

mockRespository.StrictMock<Foo>(ibarVariable)

Cependant, il ne sera pas vraiment travailler à moins que tous les membres de Foo sont virtuelles.

Questions connexes