Terkadang benda hanya perlu dipasangkan dengan erat. Sebagai contoh, suatu CsvFile
kelas mungkin perlu bekerja erat dengan CsvRecord
kelas (atau ICsvRecord
antarmuka).
Namun dari apa yang saya pelajari di masa lalu, salah satu prinsip utama pengembangan yang digerakkan oleh tes adalah "Jangan pernah menguji lebih dari satu kelas pada satu waktu." Berarti Anda harus menggunakan ICsvRecord
ejekan atau bertopik daripada contoh yang sebenarnya CsvRecord
.
Namun setelah mencoba pendekatan ini, saya perhatikan bahwa mengejek CsvRecord
kelas bisa menjadi sedikit berbulu. Yang membawa saya ke salah satu dari dua kesimpulan:
- Sulit untuk menulis tes unit! Itu bau kode! Refactor!
- Mengejek setiap ketergantungan hanya tidak masuk akal.
Ketika saya mengganti tiruan saya dengan CsvRecord
contoh yang sebenarnya , segalanya berjalan lebih lancar. Ketika mencari-cari pemikiran orang lain, saya sengaja menemukan posting blog ini , yang tampaknya mendukung # 2 di atas. Untuk benda-benda yang secara alami terikat erat, kita tidak perlu terlalu khawatir tentang mengejek.
Apakah saya keluar jalur? Apakah ada kerugian untuk asumsi # 2 di atas? Haruskah saya benar-benar berpikir tentang refactoring desain saya?