У меня есть глубоко вложенная объектная модель, где некоторые классы могут выглядеть примерно так:
class TBase { ... }
class TDerived : TBase { ... }
class Container
{
ICollection<TBase> instances;
...
}
class TopLevel
{
Container container1;
Container container2;
...
}
Я хотел бы создать объект верхнего уровня в качестве тестового прибора, но я хочу, чтобы все экземпляры TBase
(например, в коллекции instances
) были экземплярами TDerived
, а не TBase
.
Я думал, что могу сделать это довольно просто, используя что-то вроде:
var fixture = new Fixture();
fixture.Customize<TBase>(c => c.Create<TDerived>());
var model = this.fixture.Create<TopLevel>();
... но это не работает, потому что выражение лямбда в Customize
неверно. Я предполагаю, что есть способ сделать это, но у AutoFixture нет документации, кроме как потока сознания в блоге разработчика.
Может ли кто-нибудь указать мне в правильном направлении?