2010-01-19 12 views
26

Tengo una clase con una propiedad de conjunto privado que quiero anunciar con los simulacros de rinoceronte. Sin embargo, cuando trato de hacer esto, me da un error de tiempo de compilación que dice que no puedo establecer una propiedad de solo lectura. Soy nuevo en el uso de burla de Rhino por lo que debe estar pasando algo aquí ...Anulación de una propiedad de solo lectura con Rhino Mocks

public Interface IFoo 
{ 
    int Quantity { get; } 
} 

[TestMethod] 
public void SomeTest() 
{ 
    IFoo foo = MockRepository.GenerateStub<IFoo>(); 
    foo.Quantity = 5; 

    //Asserts and such 
} 

Respuesta

33

Uso:

foo.Stub (f => f.Quantity).Return (5); 

Ver http://ayende.com/Wiki/Rhino+Mocks+3.5.ashx#UsingExpecttosetupproperties

También puede utilizar:

foo.Expect(f => f.Quantity).Return (5); 
+2

El uso del método Stub funcionó perfecto después de que me di cuenta de que estaba intentando colgar la clase concreta en lugar de la interfaz. ¡Gracias! – JChristian

+0

Descubrí que 'Expect' no funciona si la propiedad se llama varias veces ya que la segunda vez en adelante se llamaba a la implementación de la propiedad original; en este caso, 'Stub' era realmente lo que yo quería. – Justin

4

Puede hacer:

foo.Stub(f => f.Quantity).Return(5); 
//asserts 
Cuestiones relacionadas