Модульное тестирование класса без возвращаемого значения?

Я не'по этому конкретному вопросу не найти много уроков

Итак, у меня есть класс под названиемРабота» который имеет публичные ctors и одну публичную функцию Run (). Все в классе приватно и инкапсулировано в классе. (Вы можете помнить более старый пост здесь на этомТестирование только публичного метода в классе среднего размера?, который мне очень помог)

Этот метод Run () делает кучу вещей - принимает файл Excel в качестве входных данных, извлекает из него данные, отправляет запрос стороннему поставщику данных, получает результат и помещает его в базу данных и регистрирует начало / конец работа.

Этот класс Job использует 3 отдельных интерфейса / класса внутри него 's метод запуска (IConnection подключится к стороннему поставщику и отправит запрос, IParser проанализирует результаты, а IDataAccess сохранит результаты в базе данных). Так что теперь единственная реальная логика в моем методе Run () - это извлечение входных данных Excel и отправка их по цепочке других классов. Я создал 3 фиктивных класса и использую DI на ctor класса Job, и все хорошо и здорово ...

Кроме - яЯ все еще немного растерялся, как, черт возьми, проверить мой метод Run () - потому чтос пустотой и неничего не вернуть ...

В этом случае я должен добавить возвращаемое значение в метод Run (), который возвращает, сколько записей было извлечено из файла Excel? Так как это единственная логика, выполненная в этой функции сейчас ... это нене может быть обработано в реальном коде, но будет в модульных тестах ... что мне кажется немного вонючим - но ям новичок в том, что касается истинного TDD ...

Второй вопрос - должен ли я создать четвертый класс с именем IExcelExtractor, который мне подходит? Или это немного классового взрыва ??

Даже если бы я сделал последнее, как бы я протестировал свою функцию Run (), если она возвращает void и вся ее работа выполняется с помощью поддельных объектов, которые действительно ничего не делают? Я мог бы понять, если бы моя функция имела значимое возвращаемое значение ... но в этом случае яно я в замешательстве.

Большое спасибо за чтение всего этого, если вы сделали это так далеко.

Ответы на вопрос(7)

Ваш ответ на вопрос