Есть ли построитель тестовых данных, который работает с классами без конструктора по умолчанию?
Из-за введения в мою кодовую базу ссылочных типов C# 8, не допускающих значения NULL, я изменяю классы домена, чтобы иметь конструкторы, принимающие параметры для инициализации значений их свойств, не допускающих значения NULL.
В модульных тестах я не хочу беспокоиться о заполнении этих параметров конструктора бессмысленными данными, поэтому я попытался использовать библиотеки, такие как NBuilder и Bogus, для создания экземпляров для меня. Поддельный примерvar myObject = Faker.Generate<MyClass>();
.
Однако похоже, что и Bogus, и NBuilder ожидают, что мои классы будут иметь конструкторы без параметров или написать некоторый код конфигурации для моего класса. Они не могут просто обнаружить мой конструктор и вызвать его со сгенерированными значениями параметров. Когда я спросил создателя Bogus, мне ответили, что они не обрабатывают эту ситуацию специально из-за возможной двусмысленности, когда существует более одного конструктора. Но я не возражаю, если фреймворк использует какое-то поведение по умолчанию для выбора конструктора (например, возьмите тот, у которого больше всего параметров).
Итак, существует ли библиотека, которая обнаруживает и использует конструкторы при создании объектов?
1 ответ
AutoBogus делает именно то, что нужно:var myObject = AutoFaker.Generate<MyClass>();