더북(TheBook)

TimeProviderInterface 인터페이스는 덕 타이핑의 오리가 어떻게 생겼는지 보여 주는 좋은 예시다. 이제 이 인터페이스를 갖고 테스트를 만들 수 있다. 테스트 코드는 예제 3-13의 테스트와 비슷하게 생겼지만 큰 차이점이 있다. 바로 컴파일러가 함수 시그니처를 제대로 작성했는지 확인해 준다는 점이다.

다음 예제에서 FakeTimeProvider 구현부를 참고해 보자.

// stub-time/03-ts-inject-interface/password-verifier-time03.spec.ts
class FakeTimeProvider implements TimeProviderInterface {
    fakeDay: number;

    getDay(): number {
        return this.fakeDay;
    }
}

다음 예제는 테스트 코드에 해당한다.

describe('password verifier with interfaces', () => {
    test('on weekends, throws exceptions', () => {
        const stubTimeProvider = new FakeTimeProvider();
        stubTimeProvider.fakeDay = SUNDAY;
        const verifier = new PasswordVerifier([], stubTimeProvider);


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