¿Cómo me burlo de un campo privado?

Soy realmente nuevo en simulacros y estoy tratando de reemplazar un campo privado con un objeto simulado. Actualmente, la instancia del campo privado se crea en el constructor. Mi código se parece a ...

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;
    }

}

o que intento hacer es crear una prueba unitaria que afirme queISnapshot.FreezeFrom(IUpdates) se llama desde dentroCache.Freeze(IUpdates). Supongo que debería reemplazar el campo privado_latest_snapshot con un objeto simulado (¿tal vez una suposición errónea?). ¿Cómo podría hacer eso sin dejar de mantener un constructor sin parámetros y no recurrir a hacerLatestSnapshot@ se ha hecho público?

Si voy totalmente a escribir la prueba de la manera incorrecta, entonces también señale.

La implementación real deISnapshot.FreezeFrom en sí mismo llama a una jerarquía de otros métodos con un gráfico de objetos profundos, por lo que no estoy demasiado interesado en afirmar el gráfico de objetos.

Gracias por adelantado

Respuestas a la pregunta(9)

Su respuesta a la pregunta