Đôi khi các đối tượng chỉ cần được gắn chặt. Ví dụ, một CsvFile
lớp có thể sẽ cần phải làm việc chặt chẽ với CsvRecord
lớp (hoặc ICsvRecord
giao diện).
Tuy nhiên, từ những gì tôi học được trong quá khứ, một trong những nguyên lý chính của phát triển dựa trên thử nghiệm là "Không bao giờ kiểm tra nhiều hơn một lớp cùng một lúc." Có nghĩa là bạn nên sử dụng giả ICsvRecord
hoặc sơ khai thay vì các trường hợp thực tế CsvRecord
.
Tuy nhiên, sau khi thử phương pháp này, tôi nhận thấy rằng việc loại bỏ CsvRecord
lớp học có thể có một ít lông. Dẫn tôi đến một trong hai kết luận:
- Thật khó để viết bài kiểm tra đơn vị! Đó là một mùi mã! Cấu trúc lại!
- Nhạo báng mọi sự phụ thuộc duy nhất là không hợp lý.
Khi tôi thay thế các giả của mình bằng các CsvRecord
trường hợp thực tế , mọi thứ diễn ra suôn sẻ hơn nhiều. Khi tìm kiếm những suy nghĩ của người khác, tôi tình cờ thấy bài đăng trên blog này , có vẻ như hỗ trợ # 2 ở trên. Đối với các đối tượng được liên kết chặt chẽ một cách tự nhiên, chúng ta không nên lo lắng quá nhiều về việc chế nhạo.
Tôi có cách không theo dõi? Có bất kỳ nhược điểm nào đối với giả định # 2 ở trên không? Tôi thực sự nên suy nghĩ về việc tái cấu trúc thiết kế của tôi?