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