Note ≣ | 여러분이 현재 객체 지향적인 스타일로 코드를 만들고 있다면 공통 인터페이스를 상속하는 클래스를 만드는 것도 하나의 방법이다. 이는 이 장 뒷부분에서 다룰 예정이다.
이제 테스트 코드에서 FakeTimeProvider를 생성하고 이를 PasswordVerifier 클래스에 의존성으로 주입한다.
describe('verifier', () => {
test('on weekends, throws exception', () => {
const verifier = new PasswordVerifier([], new FakeTimeProvider(SUNDAY));
expect(() => verifier.verify('anything'))
.toThrow("It's the weekend!");
});
});
다음 예제는 이 코드 조각을 합친 전체 코드다.
예제 3-13 손수 작성한 스텁 객체 생성하기
// stub-time/02-inject-object/password-verifier-time03.spec.js
function FakeTimeProvider(fakeDay) {
this.getDay = function () {
return fakeDay;
};
}