Должна быть возможность использовать одноразовый метод Build
для настройки с использованием конкретного конструктора образцов:
var client = fixture.Build<ConnectedClient>().FromFactory(builder).Create();
Обратите внимание, что выполнение этого действия приведет к отключению любых других настроек приспособления.
DSL поддерживает немного больше настроек, используя With
и Without
, поэтому, если есть дополнительная настройка, которую вы хотите сделать для свойств, вы можете сделать это:
var client = fixture.Build<ConnectedClient>()
.FromFactory(builder)
.With(cc => cc.SomeProperty, () => fixture.Build<T>().FromFactory(otherFactory).Create())
.Create();
Но это будет довольно утомительно для значительной настройки. Таким образом, Autofixture самоуверен.
Метод Build
действительно задуман как разовое решение. Если вы хотите больше полагаться на механизм Autofixture, чтобы делать все , кроме для создания клиентского соединения, я бы предложил полагаться на существующий метод Freeze
и атрибут Frozen
, чтобы сохранить введенные IConnection
то же самое для заданного ConnectedClient
, что избавит от необходимости указывать c ISpecimenBuilder
.