Я действительно новичок в макетах и пытаюсь заменить приватное поле фиктивным объектом. В настоящее время экземпляр частного поля создается в конструкторе. Мой код выглядит как ...
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;
}
}
Я пытаюсь создать модульный тест, который утверждает, что ISnapshot.FreezeFrom(IUpdates)
вызывается из Cache.Freeze(IUpdates)
. Я предполагаю, что я должен заменить закрытое поле _latest_snapshot
на фиктивный объект (возможно, неверное предположение?). Как бы я поступил так, оставив конструктор без параметров и не делая общедоступным набор LatestSnapshot
?
Если я собираюсь написать тест неправильно, пожалуйста, укажите также.
Фактическая реализация ISnapshot.FreezeFrom
сама вызывает иерархию других методов с глубоким графом объектов, поэтому я не слишком заинтересован в утверждении графа объектов.
Заранее спасибо.