2009-08-18 20 views
6

¿Cómo me burlo de un objeto con un constructor usando Rhino Mocks?Simula un objeto con un constructor - Rhino Mocks

Por ejemplo ¿cómo puede ser burlado este objeto ...

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

    public DoSomeThingAwesome() 
    { 
     //awesomeness happens here 
    } 

} 

Respuesta

13

No burlas Foo - te burlas IFoo. Para probar el Foo en sí mismo, se burla de IBar y pasa el simulacro al constructor.

Usted debe tratar de evitar tener cosas que se basan en la construcción de IFoo explícitamente los casos de Foo: deben ser bien dado una fábrica si IFoo de alguna manera, o tener una IFoo pasa explícitamente a ellos.

+3

Bueno, ahora es obvio que ya lo dijo. :) –

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

puede comprobar genialidad pasó a través de

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

Ha sido un tiempo desde que utiliza Rhino pero creo que puede hacer:

mockRespository.StrictMock<Foo>(ibarVariable)

Sin embargo, no será realmente el trabajo a menos que todos los miembros de Foo son virtuales.

Cuestiones relacionadas