为什么对“部分模拟”和需要它的代码有如此多的仇恨?
这是一个(理论上的)示例实现:
public ComplexResult1 operationA(Stimulus a) {
{
...
result = ...;
}
auditTheChange(a);
}
public ComplexResult2 operationB(Stimulus b) {
{
...
result = ...;
}
auditTheChange(b);
return result;
}
void auditTheChange(Stimulus stim) {
// do a bunch of stuff to record the change
// and interact with another outside service
}
现在,据我了解,这是重构良好的代码。
如果我想对 operationA 和 operationB 进行 UNIT 测试,并确保在每个场景中都进行审计,但不必测试审计代码的细节,我会使用部分模拟。
我没有看到/理解导致这么多项目(EasyMock、Mockito 等)推荐重构的原因是什么?