autofixtureを使用して、次の匿名インスタンスを作成しようとしていますProject
:
_f=new Fixture().Customize(new AutoMoqCustomization());
_p=_f.CreateAnonymous<Project>();
これは失敗し、Project
パブリックコンストラクターの要求を引き起こしますIList<Partner>
public Project(/*.....*/,IList<Partner> partners){
Guard.AgainstEmpty(partners);
}
スタックトレースは意味がありません(少なくとも私にとっては)。ほんの少しの反射やだやだ:
失敗:System.Reflection.TargetInvocationException:呼び出しのターゲットによって例外がスローされました。
---- System.ArgumentException:値が期待される範囲内にありません。
System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo method、Object [] args、SignatureStruct&signature、RuntimeType declaringType)で
それで、autoFixtureを構築するために、パートナーの匿名コレクションで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
。だから-問題は-fooを構築する前にAutoFixtureがバーコレクションのいくつかのバーを埋めることを確認する方法は?