Nel*_*elz 8 java refactoring mocking partial-mocks
为什么关于"部分嘲笑"以及需要它的代码会有如此多的仇恨?
这是一个(理论上)示例实现:
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
}
Run Code Online (Sandbox Code Playgroud)
现在,根据我的理解,这是重构良好的代码.
如果我想UNIT测试operationA和operationB,并确保在每个场景中都进行审计,但不必测试审计代码的细节,我会使用部分模拟.
我没有看到/理解导致如此多的项目(EasyMock,Mockito等)推荐重构?
如果审核确实是类的内部功能,那么应该将代码作为单元测试的一部分进行测试。为什么你的类要处理复杂的操作和审计?审计可以转移到一个单独的班级吗?
如果是这样,请以此类的合作者身份引入审核并模拟它。如果没有,请对其进行单元测试。
您可以使用部分模拟,但在这种情况下,我认为这表明该类做得太多了。