gpt4 book ai didi

java - 代码异味部分模拟?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:54 24 4
gpt4 key购买 nike

为什么对“部分模拟”和需要它的代码有如此多的仇恨?

这是一个(理论上的)示例实现:

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 进行单元测试,确保审计在每个场景中发生,不必测试审计代码的细节,我会使用部分模拟。

我没有看到/理解的是什么导致这么多项目(EasyMock、Mockito 等)推荐重构?

最佳答案

如果审计确实是类的内部功能,那么代码应该作为单元测试的一部分进行测试。为什么你的类(class)同时处理复杂的操作和审计?审计可以移到一个单独的类(class)吗?

如果是这样,将审计作为此类的协作者引入并模拟它。如果不是,请对其进行单元测试。

您可以使用部分模拟,但在这种情况下,我认为这表明该类做得太多了。

关于java - 代码异味部分模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com