Zur Zeit in einem Teil meines Projektes wie unten ein Domain-Objekt vorhanden ist:Testing Eigenschaften mit privaten Setter
public class Address
{
public virtual string HouseName { get; set; }
public virtual string HouseNumber { get; set; }
public virtual string RoadName { get; set; }
public virtual string Postcode { get; set; }
public virtual string District { get; private set; }
}
Kreis Eigenschaft ist eine berechnete Spalte in der Datenbank. Aufgrund der Anforderungen des Datenzugriffsanbieters (Entity Framework) wird ein privates Set benötigt. Das ist in Ordnung im normalen Programmablauf wie der Kreis muss nie eingestellt werden, weil es aktualisiert wird, wenn ein Adressdatensatz wird wie folgt aussieht in der Datenbank
Eine Methode, die ich testen mag gespeichert/aktualisiert:
public IEnumerable<House> GetHousesWithinSameDistrict (int addressId)
{
var addressToMatch = _addressRepository
.FirstOrDefault(address => address.Id == addressId)
return _houseRepository
.Where(house => house.Address.District == addressToMatch.District)
}
Das verursacht mir Probleme, wenn ich versuche, die addressToMatch-Variable einzurichten, da ich die District-Eigenschaft nicht festlegen kann und als solche kann ich keinen Test schreiben, um korrekte übereinstimmende Adressen zu überprüfen.
Wie sollte ich ein Adressobjekt für diesen Test einrichten?
Vielleicht 'protected internal' +' Montage: InternalsVisibleTo'? –
@ DeblatonJean-Philippe Related, aber sicherlich kein Duplikat IMHO. – Jeroen
@ DeblatonJean-Philippe Gar nicht ein Duplikat davon. – FLSH