Moq 允许模拟受保护的虚拟成员(请参阅此处)。是否可以在 FakeItEasy 中做同样的事情?
问问题
4690 次
2 回答
34
它可以完成,但不能开箱即用。诀窍是实现 IFakeObjectCallRule 并通过 Fake.GetFakeManager(foo).AddRule(myRule) 将其添加到您的假货中。
我正在考虑实现这个功能,它会是这样的:
A.CallTo(foo).WhereMethod(x => x.Name == "MyProtectedMethod").Returns("whatever");
虽然语法还不是很完善。
编辑 上述功能现已实现:
A.CallTo(foo).Where(x => x.Method.Name == "MyProtectedMethod").WithReturnType<int>().Returns(10);
于 2011-03-20T16:38:22.493 回答
19
除了 Patrik 的回答之外,我认为在这篇文章中添加一个关于如何模拟受保护的属性成员的提示是相关的:
A.CallTo(foo).Where(x => x.Method.Name == "get_MyProtectedProperty").WithReturnType<int>().Returns(10);
这实际上是反射如何处理属性的“getter”方法。
希望能帮助到你 :)
于 2012-09-01T11:30:53.250 回答