如果我有以下课程,如何使用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
}
答案 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);