Помните, что TDD так же важен для хорошего дизайна, как и для тестирования.У этого метода слишком много всего происходит;это нарушает принцип разделения проблем.
Вы уже определили несколько областей, которые необходимо проверить:
Метод, по сути, принимает 6 параметров, запрашивает базу данных, выполняет некоторую логику и возвращает List<T>
У вас есть несколько отдельных шагов, и, вероятно, есть еще несколько скрывающихся в коде.Разбиение на части - это название игры, когда дело доходит до TDD.
Для начала, было бы неплохо выделить часть, которая выполняет логику.
Ваш метод динамически формирует запрос?Разбейте этот фрагмент и проверьте его, чтобы убедиться, что запрос написан правильно.
Вы можете поместить выполнение запроса в автономный репозиторий или что-то подобное, и написать интеграционные тесты против этого.Таким образом, у вас есть только простой тест, работающий с базой данных вместо текущего сложного метода.
Если вы попытаетесь проверить это как есть, вы, скорее всего, закончите монстровым тестом, который требует большой настройки идублирует всю вашу бизнес-логику, и когда она сломается, будет неясно, что пошло не так.