때때로 객체는 단단히 결합되어야합니다. 예를 들어 CsvFile
클래스는 CsvRecord
클래스 (또는 ICsvRecord
인터페이스) 와 밀접하게 작동해야합니다 .
그러나 과거에 배운 내용에서 테스트 중심 개발의 주요 원칙 중 하나는 "한 번에 여러 클래스를 테스트하지 마십시오"입니다. 의미하는 ICsvRecord
실제 인스턴스 대신 모의 또는 스텁 을 사용해야합니다 CsvRecord
.
그러나이 접근법을 시도한 후에 나는 CsvRecord
수업 을 조롱 하면 약간 털이 나올 수 있음을 알았습니다 . 그러면 두 가지 결론 중 하나가 나옵니다.
- 단위 테스트를 작성하는 것은 어렵습니다! 코드 냄새입니다! 리팩터링!
- 모든 단일 의존성을 모의하는 것은 불합리합니다.
모의를 실제 CsvRecord
인스턴스로 바꾸면 상황이 훨씬 순조로워졌습니다. 다른 사람들의 생각을 둘러 볼 때이 블로그 게시물을 우연히 발견했습니다 . 위의 # 2를 지원하는 것 같습니다. 자연스럽게 단단히 연결된 객체의 경우 조롱에 대해 너무 걱정하지 않아도됩니다.
내가 길을 벗어 났습니까? 위의 가정 # 2에 대한 단점이 있습니까? 실제로 디자인 리팩토링에 대해 생각해야합니까?