更完整的问题是,假设一个依赖项期望接受回调函数作为参数,那么我该如何编写一个单元测试来覆盖回调逻辑 并且 仍然能够模拟该依赖项?
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
将导致回调逻辑未受到测试。此外,回调逻辑似乎应该是私有的,因此我不希望直接测试它;也许这是我的误解。
由于回调被广泛使用,我期望有一种常见的方法来测试它们,但我还没有找到。