0

有没有办法从 FakeItEasy 中的 System.Type 对象创建一个假的?如同:

var instance = A.Fake(type);

我尝试为 AutoFac 编写一个假容器,该容器会自动返回所有已解析类型的假容器。我查看了 FakeItEasy 的代码,所有支持它的方法都在内部类后面,但我发现接口 IFakeObjectContainer 看起来很有趣,但实现仍然需要注册我想要的对象。

4

2 回答 2

2

从 FakeItEasy 2.1.0 开始(但请考虑升级到最新版本以获得更多功能和更好的错误修复),您可以像这样从 Type 创建一个 fake :

using FakeItEasy.Sdk;

…

object fake = Create.Fake(type);

如果您必须使用早期版本,您可以使用一些基于反射的方法来为 A.Fake() 方法创建方法信息。(因为它是关于自动模拟,所以这应该不是问题)。

于 2011-07-09T21:08:48.833 回答
1

这最好使用注册处理程序来完成。您应该研究 AutofacContrib.Moq 如何实现其MoqRegistrationHandler. 您会看到它实际上是使用泛型方法MockRepository.Create来制作假实例。为 FakeItEasy 创建一个类似的处理程序应该非常简单。

于 2011-07-08T07:10:12.743 回答