首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoFixture AutoMoq将模拟对象转换为接口。

AutoFixture AutoMoq将模拟对象转换为接口。
EN

Stack Overflow用户
提问于 2017-04-20 20:43:28
回答 1查看 1.4K关注 0票数 2

我希望有人能给我一些想法。

我需要创建一个模拟对象,它满足以下条件:

  1. 它实现了接口IEntity。
  2. 它使用了我在EntityBase中已经有的基本实现。
  3. 这些属性是用AutoFixture自动生成的。

我尝试了几种替代方案,并以以下代码结束:

代码语言:javascript
复制
fixture.Customize(new AutoConfiguredMoqCustomization());

fixture.Customize<IEntity>(c => c.FromFactory(
     () => fixture.Create<Mock<EntityBase>>().As<IEntity>().Object));

但是,我得到以下例外:

已通过访问其对象属性初始化了模拟类型。添加接口必须在此之前完成。:(

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-21 09:03:33

您可以使用TypeRelay告诉AutoFixture,应该通过创建EntityBase实例来满足对IEntity的请求。

代码语言:javascript
复制
fixture.Customizations.Insert(0, new TypeRelay(typeof(IEntity), typeof(EntityBase)));

现在,每次AutoFixture必须创建一个IEntity实例时,它都会创建一个EntityBase实例,这个实例将由EntityBase来处理,这要归功于AutoConfiguredMoqCustomization

继电器非常方便,而且还有内置的其中有几个。实际上,它们通过对接口的继电请求和对模拟库的抽象类启用整个自动模拟功能。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43529558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档