테스트 케이스를 작성할 때 종종 다양한 입력을 사용하여 함수나 모듈의 동작을 테스트해야 합니다. Jest를 사용하는 경우, 동적으로 생성된 테스트 데이터를 사용하여 패러미터화된 테스트(parameterized tests)를 작성할 수 있습니다. 여기서는 타입스크립트와 Jest를 사용하여 동적 테스트 데이터를 생성하는 방법을 살펴보겠습니다.
Jest에서의 Dynamic Test Data 생성
Jest에서 다양한 입력을 사용하여 여러 테스트를 수행해야 할 때, 배열을 사용하여 여러 테스트 케이스를 정의할 수 있습니다. 그러나 동적으로 테스트 데이터를 생성하고 싶을 때는 어떻게 해야할까요? 이때 Jest의 test.each
를 사용하여 동적으로 테스트 데이터를 생성할 수 있습니다.
describe('My function', () => {
test.each([[1, 1, 2], [1, 2, 3], [2, 2, 4]])(
'returns the sum of %i and %i as %i',
(a, b, expected) => {
expect(a + b).toBe(expected);
},
);
});
위 예제에서 test.each
를 사용하여 배열 안에 배열을 넣어 여러 개의 테스트 케이스를 정의할 수 있습니다. 각 배열은 함수의 인자로 사용될 값들을 정의하고, 마지막 인자에는 예상되는 결과값을 넣습니다.
타입스크립트와 Dynamic Test Data
이러한 방식을 타입스크립트와 함께 사용할 때는 타입을 명시하여 유용하게 활용할 수 있습니다.
type TestData = [number, number, number];
const testCases: TestData[] = [[1, 1, 2], [1, 2, 3], [2, 2, 4]];
describe('My function', () => {
test.each(testCases)(
'returns the sum of %i and %i as %i',
(a, b, expected) => {
expect(a + b).toBe(expected);
},
);
});
위 예제에서는 TestData
라는 타입을 정의하고, testCases
라는 배열에 테스트 데이터를 명시적으로 정의하였습니다. 이를 통해 타입스크립트의 강력한 타입 체킹 기능을 활용할 수 있습니다.
결론
타입스크립트와 Jest를 함께 사용하여 동적으로 테스트 데이터를 생성하고 활용하는 방법을 살펴보았습니다. test.each
를 사용하면 테스트 코드를 더욱 간결하게 작성할 수 있고, 타입스크립트와 함께 사용하면 타입 안정성을 유지하면서 효율적으로 테스트할 수 있습니다.
이러한 방식은 함수 또는 모듈의 동작을 다양한 입력값으로 테스트하고자 할 때 매우 유용합니다.
참고문헌:
- Jest 공식 문서: https://jestjs.io/docs/en/api#testeach-table
</br>
자세한 정보가 필요하다면 관련 문서들을 확인하실 수 있습니다.