더북(TheBook)
    test('class constructor: on weekends, throws exceptions', () => {
        const alwaysSunday = () => SUNDAY;
        const verifier = makeVerifier([], alwaysSunday);
        expect(() => verifier.verify('anything')).toThrow("It's the weekend!");
    });

    test('class constructor: on weekdays, with no rules, passes', () => {
        const alwaysMonday = () => MONDAY;
        const verifier = makeVerifier([], alwaysMonday);
        const result = verifier.verify('anything');
        expect(result.length).toBe(0);
    });
});

예제 3-11은 3.4.2절에서 팩토리 함수를 사용한 예제 3-6과는 사뭇 다르다. 예제 3-11의 팩토리 함수는 테스트 내부에 있고, 예제 3-6의 팩토리 함수는 프로덕션 코드에 있다. 예제 3-11의 팩토리 함수는 테스트 유지 보수성을 위해 사용되며, 함수형 스타일과 객체 지향 스타일 기반의 코드에서 모두 사용할 수 있다. 이 함수는 함수나 객체가 어떻게 생성되고 구성되는지 외부에서 알지 못해도 사용할 수 있게 해 준다. 이는 테스트 내 추상화 계층으로, 함수나 객체를 생성하고 구성하는 방식을 한곳으로 모아 둘 수 있게 해 준다.

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