2009-08-18 51 views
0

如果我有下面的類,我怎麼使用RhinoMocks嘲笑伯爵關事的,即myStuff.Things.Count ?:如何使用Rhinomocks嘲笑Count屬性關閉子集的

public class myStuff : ImyStuff 
    { 
       private Dictionary<String,String> _things; 

...Other Code 

      public Dictionary<string, string> Things 
      { 
       get 
       { 
        return _things; 
       } 
      } 

...Other Code 

    } 

回答

1

正如你在你的問題中編寫了代碼,這是不可能的。

很難看到Things屬性是否是ImyStuff接口的成員,但即使它是,返回類型是Dictionary<string, string>,並且Count屬性Dictionary<string, string>不是虛擬的。

您只能模擬虛擬(包括抽象)成員。對於所有動態模擬框架都是如此(除了TypeMock)。

您可以做的是更改Things屬性的簽名以返回IDictionary<string, string>。這將使你能夠模擬Count屬性。

它已經,因爲我用犀牛嘲笑(我用的起訂量,這些天)一段時間,但它應該是這樣的:

var thingsStub = MockRepository.GenerateStub<IDictionary<string, string>>(); 
thingsStub.Stub(t => t.Count).Return(3); 

var myStuffStub = MockRepository.GenerateStub<ImyStuff>(); 
myStuffStub.Stub(s => s.Things).Return(thingsStub);