2009-08-18 17 views
6

Come faccio a prendere in giro un oggetto con un costruttore usando Rhino Mocks?Mock un oggetto con un costruttore - Rhino Mocks

Per esempio come sarebbe questo oggetto essere preso in giro ...

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

    public DoSomeThingAwesome() 
    { 
     //awesomeness happens here 
    } 

} 

risposta

13

Non burlate Foo - si beffe IFoo. Per testare lo stesso Foo, si prende in giro IBar e si passa la simulazione al costruttore.

Si dovrebbe cercare di evitare di avere le cose che si basano su IFoo esplicitamente costruire istanze di Foo: esse dovrebbero essere data una fabbrica se IFoo in qualche modo, o avere un IFoo passata esplicitamente a loro.

+3

Bene, ora è ovvio che tu l'abbia detto. :) –

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

è possibile controllare suggestione accaduto tramite

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

E 'stato un po' da quando ho usato Rhino, ma credo che si può fare:

mockRespository.StrictMock<Foo>(ibarVariable)

Tuttavia non funzionerà veramente a meno che tutti i membri di Foo sono virtuali.

Problemi correlati