더북(TheBook)

익명(그리고 이름 붙인) 함수를 곧장 콜백으로 넘기면 테스트하기 곤란해지니 참가자 체크인 콜백을 구현할 뭔가 좋은 (테스트하기 좋은) 묘책이 없을까?

참가자 체크인은 중요한 기능 요건이므로 가령 checkInService 같은 자체 모듈에 캡슐화하면 어떨까? 이렇게 하면 테스트 가능한 단위로 만들 수 있고 체크인 로직을 attendeeCollection에서 분리하여 코드를 재사용할 수도 있다.

TIP

TDD 방식으로 개발하면 즉흥적이고 두서없는 코드가 만들어질까 봐 염려하는 사람들이 많지만, 오히려 테스트 세부를 주의 깊게 바라볼 수 있어 프로그램 구조가 개선되는 효과가 있다.

 

3장의 ‘모듈 패턴’ 절에서 말한 대로 checkInService에 의존성을 주입하는 방법도 있다. 외부 시스템의 체크인 등록 기능을 별도의 책임으로 보고 등록용 객체를 checkInService에 주입하는 게 언뜻 타당해 보인다. 바로 곧이어 작성할 모듈인 checkInRecorder의 인스턴스를 주입하는 것이다(6장 참고).

예제 5-4는 checkInService.checkIn 함수의 기본 기능을 점검하는 테스트 꾸러미다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.