Как правильно покрыть тестами модуль парсинга и генерации данных?
Тяжело дается написание тестируемого кода и хороших тестов на практике, хочу переписать старый модуль по парсингу Excel файла и замороченной генерации данных по методике TDD для тренировки (чтобы не писать плохой код, а потом не знать, с какой стороны к нему подойти).
Чем больше анализирую, тем сложнее понять, что я вообще могу покрыть тестами, если важные части логики сокрыты в таких шагах:
- убедиться, что из файла получена правильная структура данных
- сгенерировать данные по шаблону, который подразумевает сохранение большого количества промежуточных данных в базе, генерация идет в несколько этапов
- убедиться, что конечные сгенерированные данные целостны по ряду правил
Из всего этого я могу понять, как написать функциональные тесты последнего шага, если нагенерить валидные данные через фикстуры, остальные два этапа потребуют перемокать миллион классов, работу с файлами, работу с базой.
Получается, что юнит тесты тут мало чем помогут, если начать мокать все подряд, а без моков они превратятся в функциональные или end-to-end тесты.
Можете пожалуйста рассказать, как вы поступали в похожих ситуациях или дать ссылку на материал, где такие задачи решали?
Да, у Вас хорошие примеры в начале раздела, буду вникать, спасибо) в моем случае наверно придется в два-три захода рефакторить, чтобы было читаемо и тестируемо