Я думаю, что вы подходите к проблеме правильно. В вашем процессе действительно 2 отдельных шага:
1) преобразовать документ XML в представление класса, модель
2) сделать модель для представления
Часть, где TDD должен хорошо работать, это шаг 2, потому что вы имеете дело с объектами. Затем вы можете следовать по пути, обозначенному Taesung Shin. Вы можете определить интерфейс вашего объекта, если это необходимо, и иметь IChartModel с, скажем, свойством StartDate, которое затем можно смоделировать, установить для StartDate все, что вы хотите, и написать утверждения о том, что должно быть истинно для представления. в таком случае. Как сказал Тэсунг, это поможет вам управлять вашим дизайном.
Часть, где TDD не будет работать так хорошо, находится на шаге 1. Модульные тесты работают, когда вы можете полностью работать в памяти, и по определению файл на диске не работает должным образом в этом контексте. Что бы я сделал тогда, если бы считал, что это стоит затраченных усилий, будет иметь образцы файлов и проверит ваш XmlReader на соответствие этим файлам, чтобы убедиться, что вы читаете то, что вам нужно, и правильно заполнил ввод для шага 2. Это будут не «правильные» юнит-тесты, а скорее интеграционные тесты. Я хотел бы создать «счастливый файл» с правильными данными и, возможно, файлами для потенциально искаженных случаев. Поскольку со временем вы сталкиваетесь с ошибками, вы можете начать добавлять новые файлы. Хотя эти тесты было бы неинтересно писать.
Если вы собираетесь создать этот XML-файл в своем приложении, вы можете рассмотреть возможность проведения тестов, в которых вы создаете эти файлы и читаете их обратно, что может дать вам больше «контроля кода» над происходящим, а не иметь поддерживать фиксированные файлы с течением времени, если ваш дизайн развивается.
Самое большое преимущество, которое вы получили бы, отделяя это, по моему мнению, состоит в том, что, отделяя то, как вы хотите, чтобы данные были структурированы и использованы в вашем приложении MVC, от способа получения этих данных из файла XML, вы будет иметь преимущество разделения на 2 разных уровня, и если вы решите либо извлечь эти данные из SQL, либо со временем изменить структуру вашего XML-файла, у вас будет четкое разделение между доступом к данным и их использованием. , У вас будет модель предметной области (какой должна быть диаграмма), и вы сможете подключить к ней различные источники данных.