У нас есть объект
public class MyObject{
protected MyObject(){}
public string Property1 {get;private set;}
public string Property2 {get;private set;}
public string Property3 {get;private set;}
public string Property4 {get;private set;}
public string Property5 {get;private set;}
public string Property6 {get;private set;}
public string Property7 {get;private set;}
public string Property8 {get;private set;}
public string Property9 {get;private set;}
public string Property10 {get;private set;}
}
В нашем производственном коде мы заполняем этот объект через autopper. Он может получить доступ к свойствам и установить их правильно.
Теперь, когда мы хотим протестировать этот класс в будущем конвейере, невозможно заполнить свойства фиктивными значениями (для проверки).
Есть несколько доступных вариантов.
Пользовательские конструкторы, чтобы принять параметры, необходимые для тестов и установить свойства, в настоящее время требуется 3 конструктора. Это не чисто, так как конструкторы не обслуживают бизнес-функции.
Сделайте свойства виртуальными, чтобы класс можно было заглушить. Но пометка виртуальных свойств не дает никакой ценности для бизнеса и не загрязняет мой класс.
Добавьте в класс конструктор объектов для внутреннего конструирования объекта. Опять нет добавленной стоимости бизнеса. Возможно, немного чище, но все еще много несоответствующего кода в объектах домена.
Любые предложения, советы или альтернативные варианты здесь?
источник