2010-03-18 6 views
21

Se ho un oggetto Rhino Mock che ha già ha una chiamata stub dichiarato in questo modo:Come posso sostituire una chiamata stub già dichiarata con una chiamata stub diversa?

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

C'è qualche cosa che posso rimuovere questa chiamata a sostituirlo con qualcosa di diverso ad esempio:

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

La ragione per cui chiedo è che voglio impostare alcuni mock generici da utilizzare in più test di unità e quindi consentire a ogni unità di test di personalizzare le chiamate laddove necessario.

risposta

18

Io uso questo metodo di estensione per cancellare il comportamento di stub (o il comportamento + aspettative di mock):

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(); 
    } 
} 

ho preso che fino dal this other stackoverflow answer, o forse era this one.

+2

Grazie Wim, l'unico problema è che cancellerebbe tutte le chiamate stub quindi dovrei resettarle tutte invece di ignorare quella a cui sono interessato. –

10

Uso i metodi Repeat.Once() o Repeat.Times(x) in cui si sposterà sul prossimo stub \ aspettativa quando il limite è stato raggiunto.