Testen von Eigenschaften mit privaten Setter

8

Derzeit gibt es in einem Teil meines Projekts ein Domain-Objekt wie folgt:

%Vor%

Die District-Eigenschaft ist eine berechnete Spalte in der Datenbank. Aufgrund der Anforderungen des Datenzugriffsanbieters (Entity Framework) wird ein privates Set benötigt. Dies ist im normalen Programmablauf kein Problem, da der Bezirk nie eingestellt werden muss, da er aktualisiert wird, wenn ein Adressdatensatz in der Datenbank gespeichert / aktualisiert wird.

Eine Methode, die ich testen möchte, sieht so aus:

%Vor%

Das verursacht Probleme, wenn ich versuche, die addressToMatch-Variable einzurichten, da ich die District-Eigenschaft nicht festlegen kann und daher kann ich keinen Test schreiben, um zu überprüfen, ob die richtigen übereinstimmenden Adressen zurückgegeben werden.

Wie sollte ich ein Adressobjekt für diesen Test einrichten?

    
FLSH 29.04.2016, 12:45
quelle

2 Antworten

6

Dies funktioniert sofort, wenn Sie Moq verwenden (wozu die Frage gehört, also nehme ich an, Sie sind es):

%Vor%

Ein vollständigeres Beispiel ist also:

%Vor%

Dies gibt den erwarteten Wert aus:

%Vor%     
Patrick Quirk 29.04.2016, 13:46
quelle
1

Zuerst eine wilde Vermutung: vielleicht eine Kombination aus der Deklaration von District propery als protected internal plus das Hinzufügen eines assembly:InternalsVisibleTo -Attributs zu Ihrer "Domänen" -Assembly, so dass Distinct aus Ihren Tests gesetzt werden kann.

%Vor%

Alternativ können Sie der Klasse Address einen internen Konstruktor hinzufügen, der den Wert der Eigenschaft District festlegt. Und noch einmal, kommentieren Sie Ihre "Domain" -Assembly mit assembly:InternalsVisibleTo .

    
Anton Gogolev 29.04.2016 12:52
quelle