AsV*_*leO 2 c# interface moq autofixture automoq
例如ISomething
,一个具有三个属性的接口:string Name
和int Count
一些复杂的属性ImComplex
(具有循环依赖性等),我不想自动构建.所以我需要AutoFixture来创建一个Mock of ISomething
with Name
并Count
通过其默认算法设置并ImComplex
为null.但如果我试图像这样解决它我会得到一个例外:
fixture.Customize(new AutoConfiguredMoqCustomization());
var some = fixture.Build<ISomething>().Without(x=>x.ImComplex).Create<ISomething>();
Run Code Online (Sandbox Code Playgroud)
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));
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
703 次 |
最近记录: |