更完整的问题是,给定一个期望将回调作为参数的依赖项,我该如何编写一个覆盖回调逻辑并且仍然设法模拟依赖项的单元测试?
public class DoStuff {
public void runThis(Runnable callback) {
// call callback
}
}
public class ClassUnderTest {
private DoStuff stuffToDo;
public void methodUnderTest() {
this.stuffToDo.runThis(/*a runnable with some logic*/)
}
}
在上面的示例中,我将进行模拟,stuffToDo
因为我应该验证调用和方法调用的模拟输出。但是,runThis
模拟导致未测试回调逻辑。此外,回调逻辑似乎应该是私有的,因此我不希望直接对其进行测试。也许那是我的误解。
由于回调被广泛使用,我希望有一种通用的方法来测试它们,但我没有找到它。
您无法进行单个测试。如果你假的东西,它的嘲笑,这意味着它只能验证参数,并模拟返回值(您在测试配置)。
确实,模拟某些东西的全部目的是测试隔离使用模拟的原因。如果您希望对进行单元测试DoStuff
,则不必担心使用某些可能会或可能不会起作用的回调实现。您可以模拟回调,因此不必担心。
您仍然可以通过单独测试回调代码,并单独测试回调用户(对回调使用模拟)并通过对集成测试进行适当的测试(在其中使用完全配置的组件作为测试对象)来进行良好的测试。整个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句