더북(TheBook)

이제 한 단계 더 나아가 보자. 중복을 제거하는 과정에서 beforeEach() 함수에서 verify()를 호출하고 각 it() 함수에서 불필요한 한 줄을 제거할 수 있다. 이는 기본적으로 AAA 패턴의 준비(Arrange)와 실행(Act) 부분을 beforeEach() 함수로 옮기는 작업이다.

예제 2-14 준비와 실행 부분을 beforeEach() 함수로 옮기기

// __tests__/password-verifier1.spec.js
describe('PasswordVerifier', () => {
    let verifier;

    beforeEach(() => verifier = new PasswordVerifier1());

    describe('with a failing rule', () => {
        let fakeRule, errors;

        beforeEach(() => {
            fakeRule = input => ({  passed: false, reason: 'fake reason'  });
            verifier.addRule(fakeRule);
            errors = verifier.verify('any value');
        });

        it('has an error message based on the rule.reason', () => {
            expect(errors[0]).toContain('fake reason');
        });


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