Я использую последнюю версию Autofixture и хочу предотвратить автоматическое заполнение дочерних коллекций.
Например, у меня есть класс Person со свойством List. Я хочу, чтобы все свойства были заполнены, кроме списка.
Я попытался использовать эту настройку:
public class RemoveMultiples : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Customizations
.OfType<FilteringSpecimenBuilder>()
.Where(x => x.Specification is DictionarySpecification)
.ToList().ForEach(c => fixture.Customizations.Remove(c));
fixture.Customizations
.OfType<FilteringSpecimenBuilder>()
.Where(x => x.Specification is CollectionSpecification)
.ToList().ForEach(c => fixture.Customizations.Remove(c));
fixture.Customizations
.OfType<FilteringSpecimenBuilder>()
.Where(x => x.Specification is HashSetSpecification)
.ToList().ForEach(c => fixture.Customizations.Remove(c));
fixture.Customizations
.OfType<FilteringSpecimenBuilder>()
.Where(x => x.Specification is ListSpecification)
.ToList().ForEach(c => fixture.Customizations.Remove(c));
}
}
Но это также мешает мне использовать .CreateMany()
.
edit: я могу использовать .CreateMany(3)
, и это работает.
Есть ли где-нибудь настройка, позволяющая мне автоматически заполнять коллекции только тогда, когда мне это нужно?
edit2: Человек класса должен выглядеть так:
[Serializable]
public class Person
{
private ICollection<OtherClass> _otherClasses;
private string _something;
public virtual ICollection<OtherClass> OtherClasses
{
get { return _otherClasses; }
set { _otherClasses = value; }
}
}
Обратите внимание, что это не всегда Collection
, но иногда IList
Примечание 2: я только что понял, что кто-то также удалил настройку для IEnumerable
, поэтому CreateMany()
ничего не создает.
Person
? - person Mark Seemann   schedule 31.07.2013OtherClasses
на свойство только для чтения, разве это не решит проблему? - person Mark Seemann   schedule 01.08.2013