Іноді об’єкти просто потрібно щільно з'єднати. Наприклад, CsvFile
класу, ймовірно, потрібно буде тісно працювати з CsvRecord
класом (або ICsvRecord
інтерфейсом).
Однак, з того, що я дізнався в минулому, одним із головних принципів розробки тесту є "Ніколи не тестуй більше одного класу за один раз". Значить, ви повинні використовувати ICsvRecord
макети або заглушки, а не фактичні екземпляри CsvRecord
.
Однак, спробувавши такий підхід, я помітив, що знущання над CsvRecord
класом можуть бути трохи волохатими. Що призводить мене до одного з двох висновків:
- Важко писати одиничні тести! Це кодовий запах! Рефактор!
- Знущатися над кожною залежною залежністю просто нерозумно.
Коли я замінив свої глузування фактичними CsvRecord
екземплярами, все пішло значно гладше. Оглядаючи думки інших людей, я натрапив на цю публікацію в блозі , яка, здається, підтримує №2 вище. Для об’єктів, які природно щільно з'єднані, ми не повинні так сильно хвилюватися над глузуванням.
Чи я не в дорозі? Чи є якісь недоліки до припущення №2 вище? Чи повинен я насправді замислюватися над рефакторингом свого дизайну?