예제 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!");
});
});