【发布时间】:2010-10-09 17:52:10
【问题描述】:
我对模拟真的很陌生,正在尝试用模拟对象替换私有字段。目前,私有字段的实例是在构造函数中创建的。我的代码看起来像...
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 的实际实现本身调用了具有深层对象图的其他方法的层次结构,因此我不太热衷于断言对象图。
提前致谢。
【问题讨论】:
标签: c# unit-testing mocking