Wir haben das Objekt
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;}
}
In unserem Produktionscode füllen wir dieses Objekt über Automapper. Es kann auf die Eigenschaften zugreifen und sie korrekt einstellen.
Wenn wir diese Klasse in einer zukünftigen Pipeline testen möchten, ist es nicht möglich, die Eigenschaften mit Dummy-Werten zu füllen (gegen die getestet werden soll).
Es stehen einige Optionen zur Verfügung.
Benutzerdefinierte Konstruktoren, um die für die Tests erforderlichen Parameter zu akzeptieren und die Eigenschaften festzulegen, sind derzeit 3 Konstruktoren erforderlich. Dies ist nicht sauber, da die Konstruktoren keine Geschäftsfunktionalität bereitstellen.
Machen Sie die Eigenschaften virtuell, damit die Klasse gestoppt werden kann. Das Markieren der Eigenschaften als virtuell bietet jedoch keinen geschäftlichen Wert und verschmutzt meine Klasse.
Fügen Sie der Klasse einen Objekt-Builder hinzu, um das Objekt intern zu erstellen. Wieder kein geschäftlicher Mehrwert. Vielleicht etwas sauberer, aber immer noch viel nicht relevanter Code in den Domänenobjekten.
Anregungen, Ratschläge oder alternative Möglichkeiten hier?
quelle