더북(TheBook)
        expect(() => verifier.verify('anything'))
            .toThrow("It's the weekend!");
    });
});

이제 전체 코드를 확인해 보자.

예제 3-14 공통 인터페이스 추출하기

export interface TimeProviderInterface {
    getDay(): number;
}

export class RealTimeProvider implements TimeProviderInterface {
    getDay(): number {
        return moment().day();
    }
}

export class PasswordVerifier {
    private _timeProvider: TimeProviderInterface;

    constructor(rules: any[], timeProvider: TimeProviderInterface) {
        this._timeProvider = timeProvider;
    }

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