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() 블록만 제거했음에도 가독성이 크게 향상되었다.