使用autofixture,我试图构建匿名实例Project
:
_f=new Fixture().Customize(new AutoMoqCustomization());
_p=_f.CreateAnonymous<Project>();
这失败了,导致Project
公共构造函数要求IList<Partner>
public Project(/*.....*/,IList<Partner> partners){
Guard.AgainstEmpty(partners);
}
堆栈跟踪没有意义(至少 - 对我来说)。只是一些反射yada-yada:
失败:System.Reflection.TargetInvocationException :调用的目标已引发异常。
---- System.ArgumentException : 值不在预期范围内。
在 System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo 方法,Object[] args,SignatureStruct& 签名,RuntimeType declaringType)
那么 - 如何确保 autoFixture 传递匿名的合作伙伴集合以构建它?
这不是 的错IList<Partners>
。还有一个参数叫做Priority
. Priority
本身在构造函数中持有Measure
、Measure
持有IList<Indicator>
和调用Guard.AgainstEmpty(indicators)
。
所以它看起来像这样:
fixture.CreateAnonymous<Foo>(); //kaboom!
public class Foo{
public Foo(IList<Bar> bars){
Guard.AgainstEmpty(bars); //just checks count for ienumerable & throws if 0
Bars=bars;
}
public IList<Bar> Bars {get;private set;} //should be readonly collection...
}
public class Fizz{
public Fizz(Foo foo){
Foo=foo;
}
public Foo{get;private set;}
}
public class Bar{}
施工方法失败Guard.AgainstEmpty
。所以 - 问题变成了 - 如何确保 AutoFixture 在构建 foos 之前填充条形集合中的一些条形?