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의 팩토리 함수는 테스트 유지 보수성을 위해 사용되며, 함수형 스타일과 객체 지향 스타일 기반의 코드에서 모두 사용할 수 있다. 이 함수는 함수나 객체가 어떻게 생성되고 구성되는지 외부에서 알지 못해도 사용할 수 있게 해 준다. 이는 테스트 내 추상화 계층으로, 함수나 객체를 생성하고 구성하는 방식을 한곳으로 모아 둘 수 있게 해 준다.