Использование autofixture, я пытаюсь построить анонимный экземпляр Project
:IList параметр <something> конструктор и AutoFixture
_f=new Fixture().Customize(new AutoMoqCustomization());
_p=_f.CreateAnonymous<Project>();
Это не удается, вызвать Project
общественный конструктор требует IList<Partner>
public Project(/*.....*/,IList<Partner> partners){
Guard.AgainstEmpty(partners);
}
трассировки стека ISN» (по крайней мере - для меня). Просто некоторое отражение yada-yada:
не удалось: System.Reflection.TargetInvocationException: Исключение было выбрано целью вызова.
---- System.ArgumentException: значение не входит в ожидаемый диапазон.
в System.RuntimeMethodHandle._InvokeConstructor (метод IRuntimeMethodInfo, Object [] арг, SignatureStruct & подпись, RuntimeType DeclaringType)
Так что - как убедиться, что autoFixture passses в анонимном сборе партнеров для того, чтобы построить его?
Это не ошибка 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?
Я не могу воспроизвести эту проблему, как описано здесь. AutoMoqCustomization должен создать Mock 'IList', поскольку это интерфейс. Тем не менее, я подозреваю, что что-то происходит внутри метода Guard.AgainstEmpty, который пытается использовать Mock в «незаконном» порядке. Можете ли вы, из трассировки стека, увидеть, где в вашем собственном коде генерируется исключение, и поделиться этим кодом? –
@Mark Seemann ahhh .... похоже, это не то, на что это похоже. добавит подробности в один момент к моему вопросу. –