테스트 어려운 코드를 의존성 주입으로 개선한 경험을 이야기한다
테스트 가능한 코드를 위해 가장 먼저 신경 쓰는 건 의존성이 코드 안에 박혀 있지 않은 것입니다. 특정 외부 서비스나 데이터베이스를 코드 내부에서 직접 생성하면, 테스트할 때 그것 없이는 코드가 실행이 안 됩니다. 학부 프로젝트에서 클래스 내부에서 직접 DB 연결을 생성하는 코드를 작성했는데, 테스트를 짜려고 보니 DB 없이는 아무것도 실행이 안 됐습니다. 그때 의존성을 외부에서 주입하는 방식으로 바꾸고 나서야 테스트에서 목(mock) 객체를 쓸 수 있게 됐습니다. 처음엔 구조가 복잡해 보였는데, 실제로 테스트를 짜기 시작하니까 코드의 역할 분리가 훨씬 명확해진다는 걸 느꼈습니다. 테스트 가능한 코드가 곧 좋은 구조의 코드라는 걸 이 경험으로 이해했습니다. 아직 실무 수준과는 차이가 있지만, 이 방향을 계속 발전시키고 싶습니다.