Как выполнить модульное тестирование логики обратного вызова?

Более полный вопрос, учитывая зависимость, которая ожидает обратный вызов в качестве параметра, как мне написать модульный тест, который охватывает логику обратного вызова и все еще удается смоделировать зависимость?

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

Поскольку обратные вызовы используются довольно широко, я ожидал, что будет общий метод их тестирования, но я не нашел его.

12
задан Matt 22 August 2011 в 19:46
поделиться