Я действительно ценю мощь AutoFixture в сочетании с теориями XUnit. Недавно я начал использовать инкапсуляцию настроек и предоставление их своим тесты через атрибут.
В некоторых случаях мне нужен одноразовый сценарий для запуска теста. Когда я использую AutoDomainDataAttribute, как описано выше, могу ли я запросить IFixture и ожидать получения того же экземпляра, созданного атрибутом?
В моем сценарии я использую MultipleCustomization по умолчанию для коллекций и т. д. Однако в этом случае я хочу, чтобы в конструктор моего SUT отправлялся только один элемент. Итак, я определил свой метод тестирования следующим образом:
[Theory, AutoDomainData]
public void SomeTest(IFixture fixture) {
fixture.RepeatCount = 1;
var sut = fixture.CreateAnonymous<Product>();
...
}
К сожалению, я получаю исключение при создании анонимного продукта. Другие тесты работают нормально, если я запрашиваю Product в качестве параметра метода с этими атрибутами. Это проблема только в данном конкретном случае, когда я надеюсь, что параметр приспособления — это тот же самый параметр, созданный моим атрибутом AutoDomainDataAttribute.
Конструктор продукта ожидает IEnumerable, который обычно заполняется тремя элементами из-за настроек, которые у меня есть на месте через AutoDomainData. В настоящее время моя DomainCustomization представляет собой CompositeCustomization, состоящую из MultipleCustomization и AutMoqCustomization, в указанном порядке.
Исключение: «InvalidCastException: невозможно преобразовать объект типа «Castle.Proxies.ObjectProxy» в тип «Product».