Есть ли построитель тестовых данных, который работает с классами без конструктора по умолчанию? - PullRequest
0 голосов
/ 23 апреля 2020

В связи с введением ненулевых ссылочных типов C# 8 для моей кодовой базы я изменяю классы моего домена, чтобы в них были конструкторы, принимающие параметры для инициализации значений их ненулевых свойств.

В единице тесты Я не хочу беспокоиться о заполнении этих параметров конструктора бессмысленными данными, поэтому я попытался использовать библиотеки, такие как NBuilder и Bogus, для создания экземпляров для меня. Поддельный пример: var myObject = Faker.Generate<MyClass>();.

Однако похоже, что и Bogus, и NBuilder ожидают, что мои классы будут иметь конструкторы без параметров или напишут некоторый код конфигурации для моего класса . Они не могут просто обнаружить мой конструктор и вызвать его с помощью сгенерированных значений параметров. Когда меня спросили создателя Bogus, мне ответили, что они не справляются с этой ситуацией специально из-за возможной неоднозначности, когда существует более одного конструктора. Но я не против, если фреймворк использует какое-то поведение по умолчанию для выбора конструктора (например, взять тот, у которого больше всего параметров).

Итак, есть ли библиотека, которая обнаружила бы и использовала конструкторы при генерации объектов ?

1 Ответ

0 голосов
/ 23 апреля 2020

AutoBogus делает именно то, что нужно: var myObject = AutoFaker.Generate<MyClass>();

...