随着我对单元测试的了解越来越多,我开始意识到该领域众所周知的行为(交互)与状态验证方法。
在执行某个操作后验证某个系统的状态对我来说似乎是合乎逻辑的。
关于验证被测类与其他组件的交互是否可以这样说?我仍然不是 100% 相信的。
例如:
public void DoSomething(IDependency dependency)
{
// some code ...
dependency.Method();
dependency.Method2();
// some more code ...
}
DoSomething() 的当前实现调用 Method() 和 Method2() 并且可以使用模拟测试这一事实是否具有任何实际价值?
这两种方法的调用不是 DoSomething() 的实现细节吗?
与基于状态的验证相比,验证交互似乎要脆弱得多,并且还会破坏封装(测试这种方法隐藏的东西)。