더북(TheBook)

이 예제에서 테스트는 배열의 각 값을 전달받아 한 번씩 실행한다. 처음에는 다소 복잡하게 느낄 수 있지만 시도해 보면 의외로 사용하기 쉬울 것이다. 또 코드 가독성도 높아진다.

여러 값을 전달하려면 다음 예제처럼 배열에 포함해서 전달한다.

예제 2-22 여러 값을 전달받는 test.each( ) 함수 리팩터링하기

// __tests__/password-rules.spec.js
describe('one uppercase rule', () => {
    test.each([ 
        ['Abc', true],
        ['aBc', true],
        ['abc', false], 
    ])('given %s, %s', (input, expected) => {  
        const result = oneUpperCaseRule(input);
        expect(result.passed).toEqual(expected);
    });
});

매개변수를 두 개 갖는 배열을 세 개 전달한다.

대문자가 없는 ‘abc’ 문자열은 false를 반환해야 한다.

제스트가 이중 배열을 순회하며 자동으로 각 테스트에 인수를 매핑한다.

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