[英]AutoFixture + AutoMoq: Create mock with excluded property
例如, ISomething
是一个具有三个属性的接口: string Name
和int Count
以及一些我不想建立AutoFixture的复杂属性ImComplex
(具有循环依赖等)。 因此,我需要使用AutoFixture来创建一个模拟的ISomething
模拟,其Name
和Count
由其默认算法设置,并且ImComplex
为null。 但是,如果我试图像这样解决它,我会遇到一个例外:
fixture.Customize(new AutoConfiguredMoqCustomization());
var some = fixture.Build<ISomething>().Without(x=>x.ImComplex).Create<ISomething>();
Ploeh.AutoFixture.ObjectCreationException:装饰的ISpecimenBuilder无法基于以下请求创建标本:RP.Core.IInformationUnit。 如果请求表示接口或抽象类,则可能发生这种情况; 如果是这种情况,请注册一个ISpecimenBuilder,它可以根据请求创建标本。 如果在强类型的Build表达式中发生这种情况,请尝试使用IFactoryComposer方法之一提供工厂。
我该怎么办?
Build
将禁用所有自定义项(如方法文档中所述),因此它将无法与AutoConfiguredMoqCustomization
一起使用。
如果问题在于该属性具有循环依赖关系,则可以:
配置AutoFixture以允许循环依赖,直到一定深度
fixture.Behaviors.OfType<ThrowingRecursionBehavior>().ToList() .ForEach(b => fixture.Behaviors.Remove(b)); int recursionDepth = 2; fixture.Behaviors.Add(new OmitOnRecursionBehavior(recursionDepth));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.