我使用NMock2,并且我已经起草了以下NMock类来表示一些常见的模拟框架概念:
Expect:这指定了一个模拟方法应返回的内容,并说必须进行调用或测试失败(当伴随调用时VerifyAllExpectationsHaveBeenMet()).
Stub:this指定模拟方法应返回的内容,但不能导致测试失败.
那我该怎么做呢?
在阅读了一篇关于单元测试行为而不是状态的有趣文章之后,我开始意识到我的单元测试经常与我的代码紧密耦合,因为我正在使用模拟.我无法在没有模拟的情况下对单元测试进行成像,但事实是这些模拟将我的单元测试与我的代码非常相似,因为期望和返回调用.
例如,当我创建一个使用模拟的测试时,我会记录对特定模拟的所有调用并分配返回值.现在当我因任何原因更改实际代码的实现时,很多测试都会中断,因为模拟不希望这个调用,也迫使我更新单元测试,并有效地强迫我实现每次更改两次......这种情况发生了很多.
这个问题是否是使用模拟所固有的问题,我应该学会忍受它,还是我做了一些根本错误的事情?请赐教:)当然,欢迎提供明确的解释说明.