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