首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoFixture + AutoMoq:创建带有排除属性的模拟

AutoFixture + AutoMoq:创建带有排除属性的模拟
EN

Stack Overflow用户
提问于 2015-11-28 16:40:38
回答 1查看 1.2K关注 0票数 4

例如,ISomething是一个具有三个属性的接口:string Nameint Count,以及一些复杂的属性ImComplex (循环依赖关系等等),我不希望AutoFixture构建这些属性。因此,我需要AutoFixture创建一个ISomething模型,其默认算法设置为NameCountImComplex为null。但如果我像这样解决这个问题,我会得到一个例外:

代码语言:javascript
复制
fixture.Customize(new AutoConfiguredMoqCustomization());
var some = fixture.Build<ISomething>().Without(x=>x.ImComplex).Create<ISomething>();

Ploeh.AutoFixture.ObjectCreationException :装饰的ISpecimenBuilder无法根据请求: RP.Core.IInformationUnit创建一个样本。如果请求表示接口或抽象类,就会发生这种情况;如果是这样的话,注册一个ISpecimenBuilder,它可以根据请求创建样本。如果这种情况发生在强类型的构建表达式中,请尝试使用IFactoryComposer方法之一提供一个工厂。

我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-28 20:38:52

Build禁用所有自定义(如方法的文档中所述),因此它不会与AutoConfiguredMoqCustomization一起工作。

如果问题是该属性具有循环依赖关系,则可以:

  1. 重新考虑您的设计(默认情况下,AutoFixture在找到循环依赖项时抛出它的原因,因为这些通常是设计气味)
  2. 配置AutoFixture以允许循环依赖项,直到一定深度 fixture.Behaviors.OfType().ToList() .ForEach(b => fixture.Behaviors.Remove(b));int recursionDepth = 2;fixture.Behaviors.Add(新OmitOnRecursionBehavior(recursionDepth));
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33973759

复制
相关文章

相似问题

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