Я не нашел многого в учебниках по этому конкретному вопросу.
Итак, у меня есть класс под названием "Job", в котором есть общедоступные ctors и одна общедоступная функция Run(). Все в классе является частным и инкапсулируется в классе. (Вы можете вспомнить более старое сообщение здесь, на этом Тестирование только общедоступного метода в классе среднего класса?, ответы на который мне очень помогли)
Этот метод Run() выполняет кучу вещей - принимает файл excel в качестве входных данных, извлекает данные из него, отправляет запрос стороннему поставщику данных, берет результат и помещает его в базу данных и записывает начало/конец задания.
Этот класс работы использует 3 отдельных интерфейса/классы внутри его метода запуска (IConnection будет подключаться к стороннему поставщику и отправлять запрос, IParser будет анализировать результаты, а IDataAccess сохранит результаты в базе данных). Итак, единственная реальная логика в моем методе Run() - это извлечение входного файла excel и отправка его по цепочке других классов. Я создал 3 макетных класса и использовал DI в классе Job ctor, и все в порядке и dandy...
Кроме того, я все еще немного потерял, как чертовски проверить мой метод Run() - потому что он недействителен и ничего не возвращает...
В этом случае следует добавить возвращаемое значение в метод Run(), который возвращает количество записей, извлеченных из файла Excel? Так как это единственная логика, выполняемая в этой функции сейчас.. это не будет обрабатываться в реальном коде, но будет в модульных тестах... что кажется мне немного вонючим, но я новичок до тех пор, пока true TDD...
Второй вопрос - должен ли я создать четвертый класс, называемый IExcelExtractor, который делает эту логику для меня? Или это немного взрыв класса?
Даже если бы я сделал последнее, как бы я протестировал свою функцию Run(), если она вернет void, и вся ее работа выполняется издевательскими объектами, которые на самом деле ничего не делают? Я мог понять, имела ли моя функция значимое возвращаемое значение... но в этом случае я смущен.
Большое спасибо за прочтение всего этого, если вы сделали это так далеко.