더북(TheBook)
    describe('with a failing and a passing rule', () => {
        it('has one error', () => {
            const verifier = makeVerifierWithFailedRule('fake reason');
            verifier.addRule(passingRule);
            const errors = verifier.verify('any input');
            expect(errors.length).toBe(1);
        });
        it('error text belongs to failed rule', () => {
            const verifier = makeVerifierWithFailedRule('fake reason');
            verifier.addRule(passingRule);
            const errors = verifier.verify('any input');
            expect(errors[0]).toContain('fake reason');
        });
    });
});

코드 길이는 예제 2-16과 비슷하지만 코드 가독성이 높아졌고 유지 보수도 더 쉬워졌다. beforeEach() 함수를 없앴지만 유지 보수성은 그대로 유지되었다. 중복을 많이 제거하지 않고 중첩된 beforeEach() 블록만 제거했음에도 가독성이 크게 향상되었다.

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