AutoFixture:如何从 System.Type 创建匿名



我需要从AutoFixture创建一个对象,只使用System.Type。 但是,似乎没有仅采用类型的CreateAnonymous()重载。 他们都期望编译时泛型 T。 有没有办法将System.Type转换为T?

使用使用情况详细信息进行编辑:

我正在使用AutoMapper,它有一个用于注入组件以支持复杂映射方案的钩子:

void ConstructServicesUsing(System.Func<Type,object> constructor)

从签名中可以看出,客户端可以注册一个 AutoMapper 在需要注入服务(主要是 ValueResolver 实现(时随时调用的Func

在生产版本中,此方法调用我的 StructureMap 容器来检索组件。 但是,在对映射代码进行单元测试时,我必须提供存根实现,否则 AutoMapper 会引发异常。 由于我使用 AutoFixture + Moq 作为我的自动模拟容器,因此让 AF 重新设置一个完全水合的存根似乎是很自然的,这样我就可以专注于编写单元测试代码。

这是可能的,但故意隐藏,因为您很少需要这样做:

var specimen = new SpecimenContext(fixture).Resolve(type);

AutoFixture 中有大量的扩展点,它们通常提供了比弱类型 Create 方法更好的替代方法。你想完成什么?

您必须使用反射来创建正确的MethodInfo并调用它。有关如何执行此操作,请参阅此答案:如何使用给定的 Type 对象调用泛型方法?

相关内容

  • 没有找到相关文章