예제 3-7에는 세 가지 변경점이 생겼는데, 하나씩 살펴보자.
• 먼저 moment.js 모듈을 불러와 사용하고 있었던 코드를 originalDependencies 객체로 포함하여 직접적인 외부 의존성을 끊어 냈다. 이 객체는 moment.js 모듈을 객체의 프로퍼티(property)로 포함하고 있는데, 이 방식은 모듈을 한곳에서 관리하고 교체할 수 있다는 장점이 있다.
• 다음으로 또 다른 객체인 dependencies를 추가했다. 이 객체는 기본적으로 original Dependencies 객체의 모든 실제 의존성을 포함한다.
• 마지막으로 module.exports 구문으로 내보내고 있기도 한 inject 함수는 이 모듈을 사용하는 코드(프로덕션 코드와 테스트 코드 모두)에서 실제 의존성을 임의의 가짜 의존성으로 대체할 수 있게 한다. inject() 함수를 호출하면 reset() 함수를 반환하는데, 이 함수는 현재 dependencies 변수에 원래 의존성을 다시 적용하여 가짜 의존성을 초기 상태로 되돌린다.
다음 예제는 테스트 코드에서 inject()와 reset() 함수를 사용하는 방법을 보여 준다.