Fun*_*ung 16 c# unit-testing mocking
我真的很嘲笑我正在尝试用模拟对象替换私有字段.目前,私有字段的实例是在构造函数中创建的.我的代码看起来像......
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我要做的是创建一个单元测试,断言ISnapshot.FreezeFrom(IUpdates)从内部调用Cache.Freeze(IUpdates).我猜我应该用_latest_snapshot模拟对象替换私有字段(可能是错误的假设?).我如何在保留无参数构造函数的同时不依赖于LatestSnapshot公开?
如果我完全打算以错误的方式编写测试,那么请指出.
ISnapshot.FreezeFrom它本身的实际实现使用深度对象图调用其他方法的层次结构,所以我不太热衷于断言对象图.
提前致谢.
Ale*_*x B 22
我几乎引用了"有效使用遗留代码"的技巧:
ISnapshot对象的受保护工厂方法,并在测试子类中覆盖它以返回模拟对象的实例而不是真实对象的实例.这样构造函数将从一开始就获得正确的值.ISnapshot.| 归档时间: |
|
| 查看次数: |
25698 次 |
| 最近记录: |