더북(TheBook)

예제 3-7에는 세 가지 변경점이 생겼는데, 하나씩 살펴보자.

먼저 moment.js 모듈을 불러와 사용하고 있었던 코드를 originalDependencies 객체로 포함하여 직접적인 외부 의존성을 끊어 냈다. 이 객체는 moment.js 모듈을 객체의 프로퍼티(property)로 포함하고 있는데, 이 방식은 모듈을 한곳에서 관리하고 교체할 수 있다는 장점이 있다.

다음으로 또 다른 객체인 dependencies를 추가했다. 이 객체는 기본적으로 original Dependencies 객체의 모든 실제 의존성을 포함한다.

마지막으로 module.exports 구문으로 내보내고 있기도 한 inject 함수는 이 모듈을 사용하는 코드(프로덕션 코드와 테스트 코드 모두)에서 실제 의존성을 임의의 가짜 의존성으로 대체할 수 있게 한다. inject() 함수를 호출하면 reset() 함수를 반환하는데, 이 함수는 현재 dependencies 변수에 원래 의존성을 다시 적용하여 가짜 의존성을 초기 상태로 되돌린다.

다음 예제는 테스트 코드에서 inject()reset() 함수를 사용하는 방법을 보여 준다.

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