部分嘲笑作为代码气味?

为什么关于“部分嘲笑”以及需要它的代码会有如此多的仇恨? 这是一个(理论上)示例实现:
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
}
现在,根据我的理解,这是重构良好的代码。 如果我想UNIT测试operationA和operationB,并确保在每个场景中都进行审计,但不必测试审计代码的细节,我会使用部分模拟。 我没有看到/理解导致如此多的项目(EasyMock,Mockito等)推荐重构?     
已邀请:
如果审计确实是类的内部函数,那么代码应该作为单元测试的一部分进行测试。为什么你的类处理复杂的操作和审计?审计是否可以转移到一个单独的类? 如果是这样,请将审计作为此类的协作者介绍并模拟出来。如果没有,请进行单元测试。 你可以使用部分模拟,但在这种情况下,我认为这表明课程做得太多了。     

要回复问题请先登录注册