2011-08-24 7 views
7

Per alcuni oggetti, desidero creare degli stub predefiniti in modo che le proprietà comuni contengano valori. Ma in alcuni casi voglio sovrascrivere il mio comportamento predefinito. La mia domanda è, posso in qualche modo sovrascrivere un valore già definito?Stub di una proprietà due volte con le librerie di rinoceronte

//First I create the default stub with a default value 
var foo = MockRepository.GenerateStub<IFoo>(); 
foo.Stub(x => x.TheValue).Return(1); 

//Somewhere else in the code I override the stubbed value 
foo.Stub(x => x.TheValue).Return(2); 

Assert.AreEqual(2, foo.TheValue); //Fails, since TheValue is 1 
+0

Vedi http://stackoverflow.com/questions/770013/rhino-mocks-how-to-clear- previous-expectations-on-an-object – Ted

risposta

0

Utilizzando Expect invece di Stub e GenerateMock invece di GenerateStub risolverà questo:

//First I create the default stub with a default value 
var foo = MockRepository.GenerateMock<IFoo>(); 
foo.Expect(x => x.TheValue).Return(1); 

//Somewhere else in the code I override the stubbed value 
foo.Expect(x => x.TheValue).Return(2); 

Assert.AreEqual(1, foo.TheValue); 
Assert.AreEqual(2, foo.TheValue); 
+3

Non funziona per i metodi (almeno nel mio caso in cui uso 'Arg ' come parametri). –

+0

Forse potresti creare una nuova domanda indicando il tuo problema specifico? – Jeroen

+4

Ho pensato che l'interrogante volesse impostare un numero di valori di default, quindi per ogni test cambia uno di questi valori. Cioè non fare la coda di un nuovo valore, ma cambiarlo. –

Problemi correlati