이 예제에서 테스트는 배열의 각 값을 전달받아 한 번씩 실행한다. 처음에는 다소 복잡하게 느낄 수 있지만 시도해 보면 의외로 사용하기 쉬울 것이다. 또 코드 가독성도 높아진다.
여러 값을 전달하려면 다음 예제처럼 배열에 포함해서 전달한다.
예제 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를 반환해야 한다.
➌ 제스트가 이중 배열을 순회하며 자동으로 각 테스트에 인수를 매핑한다.