더북(TheBook)

예제 3-6 고차 함수 사용하기

// stub-time/01-higher-order/password-verifier-time01.js
const SUNDAY = 0, MONDAY = 1, TUESDAY = 2, WEDNESDAY = 3, THURSDAY = 4, FRIDAY = 5, SATURDAY = 6;
const makeVerifier = (rules, dayOfWeekFn) => {
    return function(input) {
        // 현재 날짜가 토요일 또는 일요일인 경우 오류가 발생한다.
        if ([SATURDAY, SUNDAY].includes(dayOfWeekFn())) {
            throw new Error("It's the weekend!");
        }
        // 이곳에 다른 코드를 작성한다.
    };
};

// stub-time/01-higher-order/password-verifier-time01.spec.js
describe('verifier', () => {
    test('factory method: on weekends, throws exceptions', () => {
        const alwaysSunday = () => SUNDAY;
        const verifyPassword = makeVerifier([], alwaysSunday);

        expect(() => verifyPassword('anything')).toThrow("It's the weekend!");
    });
});
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.