Более полный вопрос, учитывая зависимость, которая ожидает обратный вызов в качестве параметра, как мне написать модульный тест, который охватывает логику обратного вызова и все еще удается смоделировать зависимость?
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
приводит к тому, что логика обратного вызова не проверяется. Кроме того, логика обратного вызова выглядит так, как будто она должна быть закрытой, поэтому я не ожидаю, что она будет проверена напрямую; возможно, это заблуждение с моей стороны.
Поскольку обратные вызовы используются довольно широко, я бы ожидал, что будет общий метод для их тестирования, но я не нашел его.