Jestem naprawdę nowy w szyderstwie i próbuję zastąpić prywatne pole próbnym obiektem. Obecnie instancja pola prywatnego jest tworzona w konstruktorze. Mój kod wygląda ...Jak wyśmiać prywatne pole?
public class Cache {
private ISnapshot _lastest_snapshot;
public ISnapshot LatestSnapshot {
get { return this._lastest_snapshot; }
private set { this._latest_snapshot = value; }
}
public Cache() {
this.LatestSnapshot = new Snapshot();
}
public void Freeze(IUpdates Updates) {
ISnapshot _next = this.LastestSnapshot.CreateNext();
_next.FreezeFrom(Updates);
this.LastestSnapshot = _next;
}
}
Co staram się zrobić, to stworzyć test jednostki, która twierdzi ISnapshot.FreezeFrom(IUpdates)
nazywany jest od wewnątrz Cache.Freeze(IUpdates)
. Zgaduję, że powinienem zastąpić prywatne pole _latest_snapshot
fałszywym obiektem (może błędnym założeniem?). Jak mam to zrobić, zachowując konstruktor bez parametrów i nie stosując zestawu LatestSnapshot
?
Jeśli mam zamiar napisać test w niewłaściwy sposób, proszę również zwrócić uwagę.
Sam fakt wykonania ISnapshot.FreezeFrom
sam nazywa się dziedziczeniem innych metod z głębokim wykresem obiektów, więc nie jestem zbyt zainteresowany przedstawieniem wykresu obiektu.
Z góry dziękuję.
Co jeśli testowana klasa używa prywatnego pola reprezentującego bazę danych. Jak wyśmiać to pole bazy danych? – Vanuan
chcesz poznać schemat repozytorium, który zasadniczo ukrywa magazyn danych za zestawem interfejsów, dzięki czemu można je łatwo wyśmiewać i przetestować. – Jason
Nadal jednak, jak konstruujesz to wyśmiewane repozytorium i przekazujesz je konsumentowi? Czy potrzebujesz settera lub parametru konstruktora? – Vanuan