비밀번호 검증 프로젝트에 새로운 의존성을 추가했다. 그런데 문제가 있다. 주말에는 비밀번호 검증기가 제대로 동작하지 않는 것이다. 구체적으로 이 모듈은 자바스크립트의 날짜/시간을 다루는 라이브러리인 moment.js에 직접적으로 의존하고 있다. 자바스크립트에서 날짜를 직접 다루는 것은 쉽지 않기에 이러한 날짜 라이브러리를 프로젝트에서 사용하는 경우가 많다.
그렇다면 시간 관련 라이브러리를 직접 사용하는 것이 단위 테스트에 어떤 영향을 미칠까? 날짜/시간 라이브러리를 직접 사용함으로써 우리는 날짜나 시간을 직접 통제할 수 없다(라이브러리에서 제공하는 값을 사용해야 하므로). 이는 테스트의 실행과 결과가 현재 날짜와 시간에 따라 달라질 수 있음을 의미한다. 다음 예제는 주말에만 실행되는 안타까운 테스트의 문제를 보여 준다.
예제 3-2 moment를 사용하는 verifyPassword() 함수의 초기 테스트 코드
// ch3-stubs/stub-time/00-parameterspassword-verifier-time00.spec.js
const moment = require('moment');
const { verifyPassword } = require('./password-verifier-time00');
const SUNDAY = 0;
const SATURDAY = 6;
const MONDAY = 2;