[typescript] 타입스크립트 단위 테스트 작성 시 테스트 케이스 구조화 방법

타입스크립트로 애플리케이션을 개발하는 경우 단위 테스트는 코드의 신뢰성을 높이고 유지 보수를 용이하게 합니다. 이를 위해서는 효과적인 테스트 케이스 구조화가 필수적입니다. 이 글에서는 타입스크립트로 단위 테스트를 작성할 때 효과적인 테스트 케이스 구조화 방법을 살펴보겠습니다.

1. 파일 및 디렉터리 구조

단위 테스트를 작성할 때는 테스트 파일을 소스 코드와 동일한 디렉터리 구조에 유지하는 것이 일반적입니다. 예를 들어, src 디렉터리에 소스 코드를, src/__tests__ 디렉터리에 테스트 코드를 유지하는 방법이 흔히 사용됩니다.

project
└── src
    ├── app.ts
    └── __tests__
        └── app.test.ts

2. 테스트 러너 설정

Jest나 Mocha와 같은 테스트 러너를 사용하여 테스트를 실행하는 경우, 테스트 파일과 소스 파일을 매핑시키는 설정이 필요합니다. 보통 테스트 러너 설정 파일에서 이를 설정할 수 있습니다.

Jest의 경우, package.json 또는 별도의 jest.config.js 파일에 다음과 같이 moduleNameMapper를 설정하여 소스 코드와 테스트 코드를 매핑할 수 있습니다.

"jest": {
  "moduleNameMapper": {
    "^src/(.*)$": "<rootDir>/src/$1",
    "^__tests__/(.*)$": "<rootDir>/src/__tests__/$1"
  }
}

3. 테스트 케이스 작성

타입스크립트로 작성된 코드의 단위 테스트를 작성할 때는 보통 jest를 사용하는 것이 일반적입니다. jest를 사용하여 테스트 케이스를 작성할 때는 소스 코드의 함수 또는 모듈별로 테스트 파일을 작성하고, 각 테스트 케이스는 describeit 함수를 사용하여 구조화하는 것이 좋습니다.

예를 들어, 다음은 app.ts에 있는 sum 함수의 테스트를 작성한 예시입니다.

// app.ts
export function sum(a: number, b: number): number {
  return a + b;
}

// app.test.ts
import { sum } from '../app';

describe('sum', () => {
  it('adds 1 + 2 to equal 3', () => {
    expect(sum(1, 2)).toBe(3);
  });
});

이러한 방식으로 테스트 케이스를 구조화하면 테스트 코드의 유지 보수가 용이해지고, 새로운 테스트 케이스 추가 및 수정이 쉬워집니다.

효과적인 단위 테스트를 작성하기 위해서는 테스트 코드의 구조뿐만 아니라 테스트 러너의 설정과 함께 고려해야 할 사항이 많습니다. 이러한 측면을 모두 고려하여 테스트를 구조화하면 유지보수성이 뛰어난 안정적인 코드를 유지할 수 있습니다.

이상으로, 타입스크립트로 단위 테스트를 작성할 때 효과적인 테스트 케이스 구조화 방법에 대해 알아보았습니다. 부가적인 정보와 예시 코드는 다음 출처를 참고하세요.

출처: Jest 공식문서