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