2011-08-24 15 views
7

Para algunos objetos, deseo crear trozos predeterminados para que las propiedades comunes contengan valores. Pero en algunos casos, quiero anular mi comportamiento predeterminado. Mi pregunta es, ¿puedo sobrescribir de alguna manera un valor ya anotado?Trozo de una propiedad dos veces con mohos de 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

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

Respuesta

0

Usando Expect en lugar de Stub y GenerateMock en lugar de GenerateStub va a resolver este:

//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

No funciona para los métodos (al menos en mi caso, cuando uso 'Arg ' como parámetros). –

+0

¿Tal vez podría crear una nueva pregunta que indique su problema específico? – Jeroen

+4

Pensé que el interlocutor quería establecer un número de valores por defecto, luego para cada prueba cambiar uno de estos valores. Es decir. no hacer cola en un nuevo valor, sino cambiarlo. –