[typescript] 타입스크립트 테스트 코드 작성 시 주의할 점 이해하기

타입스크립트는 정적 타입 지원과 함께 안정적인 코드를 작성할 수 있도록 도와주는 많은 기능을 제공합니다. 테스트 코드를 작성할 때도 이러한 타입 시스템을 적극적으로 활용하여 안정성을 높일 수 있습니다. 이번 포스트에서는 타입스크립트에서 테스트 코드를 작성할 때 주의할 점에 대해 알아보겠습니다.

1. 타입 안전성 유지하기

타입스크립트의 강력한 기능 중 하나는 타입 안전성을 보장하는 것입니다. 테스트 코드를 작성할 때에도 타입을 명시적으로 지정하고, 타입 안전성을 유지하는 것이 중요합니다. 예를 들어, 특정 함수에 대해 입력과 반환 값의 타입을 명확히 정의하여 테스트 코드를 작성해야 합니다.

// 예시: 함수의 입력과 반환 타입 명시
function add(a: number, b: number): number {
    return a + b;
}

// 테스트 코드에서 입력과 반환 값의 타입을 확인
test('add 함수 테스트', () => {
    expect(add(2, 3)).toBe(5);
});

2. 모의 객체(Mocking) 활용

테스트 코드를 작성할 때 다른 모듈 또는 클래스와의 의존성을 제거하고 독립적으로 테스트하는 것이 중요합니다. 모의 객체(Mocking)를 활용하여 외부 의존성을 대체할 수 있습니다. Jest와 같은 테스트 러너를 사용한다면 간단하게 모의 객체를 생성하고 테스트에 활용할 수 있습니다.

// 외부 의존성 대체를 위한 모의 객체 활용 예시
class DataService {
    getData() {
        // ... 데이터를 가져오는 코드
    }
}

// 데이터 서비스 의존성 대체
const mockDataService = {
    getData: jest.fn(() => [1, 2, 3]),
};

// 모의 객체를 사용한 테스트
test('데이터 가져오기 테스트', () => {
    // ... 테스트 코드에서 모의 객체 활용
});

3. 타입스크립트 특화된 테스트 러너 활용

타입스크립트 전용 테스트 러너를 사용하면 타입스크립트 코드에 최적화된 테스트 작성이 가능합니다. 예를 들어, ts-jest를 사용하면 타입스크립트와 Jest를 통합하여 타입 확인과 테스트를 함께 수행할 수 있습니다.

// ts-jest를 활용한 테스트 실행 예시
```typescript
{
  "jest": {
    "transform": {
      "^.+\\.ts$": "ts-jest"
    }
  }
}

위와 같이 ts-jest를 설정하고 테스트 스크립트를 실행하면 타입스크립트 코드에 대한 테스트가 수월해집니다.

타입스크립트를 사용하는 프로젝트에서 테스트 코드를 작성할 때 위의 3가지 요소에 주의하며 작성하면, 안정적이고 타입 안전성을 보장받는 테스트 코드를 작성할 수 있습니다.