Класс с вложенной коллекцией - как мне заполнить вложенный класс? - PullRequest
4 голосов
/ 28 марта 2011

Я немного сбит с толку относительно того, чтобы гидрировать класс вложенной коллекцией другого класса.Я получаю сообщение об ошибке:

AutoFixture не удалось создать экземпляр из System.Collections.Generic.IList`1 [typename ...]

Я пыталсяиспользовать Fixture.Register() для регистрации типа для заполнения внутреннего класса.Я мог бы просто сделать с примером, который показывает

  1. Основной класс
  2. Вложенная коллекция (IList / IEnumerable) другого класса.

IЯ также заметил, что Register() помечен как устаревший, но нет никакой документации по методу Inject() на CodePlex, поэтому я озадачен тем, как это должно работать.

1 Ответ

4 голосов
/ 28 марта 2011

AutoFixture не делает никаких предположений о том, как создавать экземпляры интерфейсов, но вы можете довольно легко включить поведение, которое вы ищете - например, для целых чисел:

fixture.Register(() => fixture.CreateMany<int>());

В следующей версии AutoFixture 2.1 вы также можете просто включить соглашения для различных коллекций с помощью одного вызова метода:

var fixture = new Fixture().Customize(new MultipleCustomization());

Что касается устаревания метода Register, обратите внимание, что это только одна перегрузка метода Register, помеченная как устаревшая. Метод Inject - это прямая замена - он имеет ту же сигнатуру и имя, но другое имя. Все остальные перегрузки регистра не считаются устаревшими и должны использоваться как «документированные».

...