Иногда объекты просто должны быть тесно связаны. Например, CsvFileкласс, вероятно, должен будет тесно работать с CsvRecordклассом (или ICsvRecordинтерфейсом).
Однако из того, что я узнал в прошлом, одним из основных принципов разработки, основанной на тестировании, является «Никогда не тестируйте более одного класса за раз». Это означает, что вы должны использовать ICsvRecordмакеты или заглушки, а не фактические экземпляры CsvRecord.
Однако, попробовав такой подход, я заметил, что издевательство над CsvRecordклассом может стать немного волосатым. Что приводит меня к одному из двух выводов:
- Трудно писать модульные тесты! Это кодовый запах! Refactor!
- Копировать каждую зависимость просто неразумно.
Когда я заменил свои издевательства на настоящие CsvRecordэкземпляры, все пошло гораздо более гладко. Когда я искал мысли других людей, я наткнулся на этот пост в блоге , который, кажется, поддерживает № 2 выше. Для объектов, которые естественно тесно связаны, мы не должны сильно беспокоиться о насмешках.
Я не в курсе? Есть ли недостатки в предположении № 2 выше? Должен ли я на самом деле думать о рефакторинге моего дизайна?