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