如何使用Rhinomocks模拟子集合的Count属性

时间:2009-08-18 20:08:12

标签: rhino-mocks

如果我有以下课程,如何使用RhinoMocks来模拟Count of of Things,即myStuff.Things.Count?:

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

...Other Code

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

 ...Other Code  

    }

1 个答案:

答案 0 :(得分:1)

正如您在问题中编写代码一样,这是不可能的。

很难看出Things属性是否是ImyStuff接口的成员,但即使它是,返回类型是Dictionary<string, string>,而Dictionary<string, string>的Count属性不是虚拟的

您只能模拟虚拟(包括抽象)成员。对于所有动态模拟框架都是如此(TypeMock除外)。

您可以做的是更改Things属性的签名以返回IDictionary<string, string>。这将使您能够模拟Count属性。

我使用Rhino Mocks已经有一段时间了(我现在使用的是Moq),但它应该是这样的:

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);