타입스크립트로 애플리케이션을 개발하는 경우 단위 테스트는 코드의 신뢰성을 높이고 유지 보수를 용이하게 합니다. 이를 위해서는 효과적인 테스트 케이스 구조화가 필수적입니다. 이 글에서는 타입스크립트로 단위 테스트를 작성할 때 효과적인 테스트 케이스 구조화 방법을 살펴보겠습니다.
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
를 사용하여 테스트 케이스를 작성할 때는 소스 코드의 함수 또는 모듈별로 테스트 파일을 작성하고, 각 테스트 케이스는 describe
와 it
함수를 사용하여 구조화하는 것이 좋습니다.
예를 들어, 다음은 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 공식문서