2011-10-11 14 views
6

¿Cómo puedo aplicar un objeto stub en RhinoMocks para devolver el vacío para un método nulo en él?¿Cómo puedo aplicar un método nulo para devolver Void desde un objeto Stub?

Tome este ejemplo:

public interface ICar 
{ 
    string Model {get;set;} 
    void Horn(); 
} 

ICar stubCar= MockRepository.GenerateStub<ICar>(); 
stubCar.Expect(c=>c.Horn()).Return(//now what so that 
            // it returns nothing as the meth. returns void ? 
+0

Si se define con un tipo de devolución de nulo, ¿cómo _podrá devolver algo? – CodingGorilla

+0

Mi preocupación era si no lo hago cumplir para devolver el vacío, la llamada a este talón arrojará una excepción. Intenté y vi eso: ¡Jon tenía razón! – pencilCake

Respuesta

8

El método no puede devolver un valor - es un método vacío. El CLR no let intenta devolver un valor. No es necesario que haga una prueba para esto.

Solo necesita la llamada Expect.

6

El método Return() no es válido para una llamada al método void. Por el contrario quieres algo como esto:

ICar stubCar= MockRepository.GenerateStrictMock<ICar>(); 
stubCar.Expect(c=>c.Horn()); 
stubCar.DoSomethingThatIsSupposedToCallHorn(); 
stubCar.VerifyAllExpectations(); 

que le dirá si es o no Horn() fue llamado.

Así es como se prueba que se invoquen los métodos nulos cuando se prueban las unidades. Hacer lo siguiente:

  1. Establecer una expectativa (Expect())
  2. Llame al método que se debe invocar a la expectativa
  3. Compruebe que el método esperado se llama.
+0

No creo que esto vaya a funcionar porque está usando un Stub no un simulacro, y los talones siempre pasarán VerifyAllExpectations ver: http://www.wrightfully.com/on-rhino-mocks-verifyallexpectations-vs-assertwascalled/ – crabCRUSHERclamCOLLECTOR

+0

Eso debería ser un simulacro estricto. Lo cambiaré. Gracias por atrapar eso. –

Cuestiones relacionadas