2010-03-18 8 views
21

Si tengo un objeto Rhino Mock que ya tiene una llamada talón declarada en él así:¿Cómo puedo reemplazar una llamada stub ya declarada con una llamada stub diferente?

mockEmploymentService.Stub(x => x.GetEmployment(999)).Return(employment); 

¿Hay alguna forma de eliminar esta llamada a reemplazarlo con algo diferente por ejemplo:

mockEmploymentService.Stub(x => x.GetEmployment(999)).Return(null); 

La razón por la que pregunto es que quiero configurar algunos simulacros genéricos para usarlos en pruebas de unidades múltiples y luego permitir que cada prueba de unidad adapte las llamadas cuando sea necesario.

Respuesta

18

Puedo usar este método de extensión para limpiar el comportamiento de los talones (o el comportamiento + expectativas de burla):

public static class RhinoExtensions 
{ 
    /// <summary> 
    /// Clears the behavior already recorded in a Rhino Mocks stub. 
    /// </summary> 
    public static void ClearBehavior<T>(this T stub) 
    { 
     stub.BackToRecord(BackToRecordOptions.All); 
     stub.Replay(); 
    } 
} 

Tomé que desde this other stackoverflow answer, o tal vez era this one.

+2

Gracias Wim, el único problema es que borrará todas las llamadas secundarias, así que tendría que restablecerlas todas en lugar de simplemente anular la que me interesa. –

10

Utilizo los métodos Repeat.Once() o Repeat.Times(x) donde se moverá en el siguiente stub \ expectation cuando se haya alcanzado el límite.

Cuestiones relacionadas