如何在FakeItEasy中模拟受保护的虚拟成员?

时间:2011-03-18 11:32:35

标签: c# unit-testing fakeiteasy

Moq允许模拟受保护的虚拟成员(see here)。是否有可能在FakeItEasy中做同样的事情?

2 个答案:

答案 0 :(得分:25)

可以这样做,但不能开箱即用。诀窍是实现IFakeObjectCallRule并通过Fake.GetFakeManager(foo).AddRule(myRule)将其添加到您的假冒。

我正在考虑实现这个功能,它会是这样的:

A.CallTo(foo).WhereMethod(x => x.Name ==“MyProtectedMethod”)。返回(“what”);

但语法还不完善。

修改 现在实现了上述功能:

A.CallTo(foo).Where(x => x.Method.Name == "MyProtectedMethod").WithReturnType<int>().Returns(10);

答案 1 :(得分:14)

除了Patrik的回答,我认为在这篇文章中添加一个如何模拟受保护的财产成员的提示是相关的:

A.CallTo(foo).Where(x => x.Method.Name == "get_MyProtectedProperty").WithReturnType<int>().Returns(10);

这实际上是反射如何对待'getter'属性方法。

希望有所帮助:)