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

发布于 2024-11-19 01:32:28 字数 254 浏览 3 评论 0原文

有没有办法在 FakeItEasy 中从 System.Type 对象创建一个假的?类似于:

var instance = A.Fake(type);

我尝试为 AutoFac 编写一个假容器,它会自动返回所有已解析类型的假值。我查看了 FakeItEasy 的代码,所有支持此功能的方法都位于内部类后面,但我发现接口 IFakeObjectContainer 看起来非常有趣,但实现仍然需要对象注册,这正是我想要解决的问题。

Is there any way to create a fake from a System.Type object in FakeItEasy? Similar to:

var instance = A.Fake(type);

I try to write a fake container for AutoFac that automatically return fakes for all resolved types. I have looked in the code for FakeItEasy and all methods that support this is behind internal classes but I have found the interface IFakeObjectContainer that looks pretty interesting, but the implementations still need registration of objects that is the thing that I want to come around.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无力看清 2024-11-26 01:32:28

从 FakeItEasy 2.1.0 开始(但请考虑升级到最新版本以获得更多功能和更好的错误修复),您可以 从类型创建一个假的,如下所示:

using FakeItEasy.Sdk;

…

object fake = Create.Fake(type);

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

As of FakeItEasy 2.1.0 (but do consider upgrading to the latest release for more features and better bugfixes), you can create a fake from a Type like so:

using FakeItEasy.Sdk;

…

object fake = Create.Fake(type);

If you must use an earlier release, you could use some reflection based approach to create a method info for the A.Fake() method. (since it's about auto mocking this shouldn't be a problem really).

离笑几人歌 2024-11-26 01:32:28

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

This is best done using a registration handler. You should look into how AutofacContrib.Moq implements its MoqRegistrationHandler. You'll see that it is actually using the generic method MockRepository.Create to make fake instances. Creating a similar handler for FakeItEasy should be quite simple.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文