2010-01-19 25 views
26

Ho una classe con una proprietà set privata che voglio eliminare con i buffetti di rinoceronte. Quando provo a farlo, però, mi dà un errore di compilazione che dice che non posso impostare una proprietà di sola lettura. Sono nuovo di utilizzare Rhino Mocks quindi devo essere perso qualcosa qui ...Stubing di una proprietà di sola lettura con Rhino Mocks

public Interface IFoo 
{ 
    int Quantity { get; } 
} 

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

    //Asserts and such 
} 

risposta

33

Usa:

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

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

È inoltre possibile utilizzare:

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

L'utilizzo del metodo Stub ha funzionato perfettamente dopo che mi sono reso conto che stavo cercando di stub la classe concreta piuttosto che l'interfaccia. Grazie! – JChristian

+0

Ho trovato che "Aspettarsi" non funziona se la proprietà viene chiamata più volte mentre la seconda volta in cui è stata richiamata l'implementazione della proprietà originale - in questo caso "Stub" era effettivamente ciò che volevo. – Justin

4

Basta fare:

foo.Stub(f => f.Quantity).Return(5); 
//asserts 
Problemi correlati