이렇게 외부와 연결된 직접적인 의존성은 어떻게 해결할 수 있을까? 애석하게도 해결할 수 없다. 이후에 해당 의존성을 다른 것으로 대체할 수 있도록 코드를 다르게 작성해야 한다. 즉, 의존성을 대체할 수 있는 심을 만들어야 한다. 다음 예제는 이러한 심을 사용하는 방식을 보여 준다.
예제 3-7 필수 의존성 추상화하기
// stub-time/001-modular/password-verifier-time00-modular.js
const originalDependencies = { ➊
moment: require('moment'),
};
let dependencies = { ...originalDependencies }; ➋
const inject = (fakes) => { ➌
Object.assign(dependencies, fakes);
return function reset() { ➍
dependencies = { ...originalDependencies };
};
};
const SUNDAY = 0;
const SATURDAY = 6;