У нас є об’єкт
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;}
}
У нашому виробничому коді ми заповнюємо цей об'єкт за допомогою автоматичної машини. Він може отримати доступ до властивостей і встановити їх правильно.
Тепер, коли ми хочемо протестувати цей клас у майбутньому конвеєрі, неможливо заповнити властивості фіктивними значеннями (для перевірки).
Є кілька варіантів.
Спеціальні конструктори, щоб прийняти параметри, необхідні для тестів, і встановити властивості, в даний час потрібні 3 конструктори. Це не є чисто, оскільки конструктори не обслуговують жодної функціональності бізнесу.
Зробіть властивості віртуальними, щоб клас можна було заглушити. Але маркування властивостей віртуальними не дає ніякої цінності для бізнесу та забруднює мій клас.
Додайте конструктор об'єктів до класу для внутрішньої побудови об'єкта. Знову ніякої додаткової вартості бізнесу. Можливо, трохи чистіше, але все-таки багато невідповідного коду в об’єктах домену.
Тут є якісь пропозиції, поради чи альтернативні варіанти?