[typescript] 타입스크립트와 Jest에서의 동적 테스트 데이터(Dynamic Test Data) 생성 방법

테스트 케이스를 작성할 때 종종 다양한 입력을 사용하여 함수나 모듈의 동작을 테스트해야 합니다. 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를 사용하면 테스트 코드를 더욱 간결하게 작성할 수 있고, 타입스크립트와 함께 사용하면 타입 안정성을 유지하면서 효율적으로 테스트할 수 있습니다.

이러한 방식은 함수 또는 모듈의 동작을 다양한 입력값으로 테스트하고자 할 때 매우 유용합니다.

참고문헌:

</br>

자세한 정보가 필요하다면 관련 문서들을 확인하실 수 있습니다.