[typescript] 타입스크립트 단위 테스트 작성 시 고려해야 할 사항

타입스크립트는 정적 타입을 제공하므로 단위 테스트 작성 시 몇 가지 고려 사항이 있습니다. 이 포스트에서는 타입스크립트 단위 테스트를 작성할 때 주의해야 할 사항에 대해 살펴보겠습니다.

타입 안정성

타입스크립트는 강력한 타입 시스템을 가지고 있어 코드의 안정성을 높여줍니다. 따라서 단위 테스트를 작성할 때 타입 안정성을 유지하는 것이 중요합니다. 특히 함수의 인자와 반환 값의 타입을 정확히 명시하여 타입 에러를 방지하는 것이 필요합니다.

예를 들어, 다음은 add 함수의 타입 안정성을 유지하는 예시입니다.

function add(a: number, b: number): number {
  return a + b;
}

test('add should return the sum of two numbers', () => {
  expect(add(1, 2)).toBe(3);
});

Mocking

타입스크립트에서 단위 테스트를 작성할 때 외부 의존성을 가진 모듈이나 함수를 모킹(mocking)하는 것이 중요합니다. 특히 외부 API 호출이나 파일 시스템 접근과 같이 외부 환경에 의존하는 코드의 경우, 모킹을 통해 외부 의존성을 제어할 수 있습니다.

import axios from 'axios';

function fetchData(url: string) {
  return axios.get(url);
}

test('fetchData should return the data from the API', async () => {
  // 모킹을 사용하여 axios.get을 대체
  jest.spyOn(axios, 'get').mockResolvedValue({ data: 'mocked data' });

  const data = await fetchData('https://example.com/api');
  expect(data).toEqual('mocked data');
});

ASYNC/AWAIT 사용

타입스크립트에서는 비동기 코드의 단위 테스트를 작성할 때 ASYNC/AWAIT를 사용하여 비동기 작업이 완료될 때까지 기다리는 것이 중요합니다. 이를 통해 테스트의 안정성을 높일 수 있습니다.

async function fetchData(url: string) {
  const response = await fetch(url);
  const data = await response.json();
  return data;
}

test('fetchData should return the data from the API', async () => {
  const data = await fetchData('https://example.com/api');
  expect(data).toEqual('expected data');
});

결론

타입스크립트로 작성된 코드의 단위 테스트를 작성할 때는 타입 안정성 유지, 모킹 활용, ASYNC/AWAIT 활용 등을 고려해야 합니다. 이를 통해 안정적이고 신뢰할 수 있는 코드를 유지할 수 있습니다.

참고 자료: