2010-01-19 4 views
26

J'ai une classe avec une propriété de jeu privée que je veux tronquer avec des rhinocéros. Lorsque j'essaie de faire cela, cependant, il me donne une erreur de compilation en disant que je ne peux pas définir une propriété en lecture seule. Je suis nouveau à l'aide de Rhino Mocks donc je dois être absent quelque chose ici ...Stubbing d'une propriété en lecture seule avec Rhino Mocks

public Interface IFoo 
{ 
    int Quantity { get; } 
} 

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

    //Asserts and such 
} 

Répondre

33

Utilisation:

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

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

Vous pouvez également utiliser:

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

L'utilisation de la méthode Stub a fonctionné parfaitement après que j'ai réalisé que j'essayais de tronquer la classe concrète plutôt que l'interface. Merci! – JChristian

+0

J'ai trouvé que 'Expect' ne fonctionne pas si la propriété est appelée plusieurs fois que la deuxième fois que l'implémentation de la propriété d'origine a été appelée - dans ce cas,' Stub' était réellement ce que je voulais. – Justin

4

Vous pouvez simplement faire:

foo.Stub(f => f.Quantity).Return(5); 
//asserts 
Questions connexes