[typescript] 타입스크립트 단위 테스트 작성 시 예외 처리 기법

타입스크립트로 코드를 작성할 때, 단위 테스트를 작성하여 코드의 안정성을 검증하는 것이 매우 중요합니다. 하지만 코드를 테스트할 때 예외 상황을 다루는 것은 더욱 중요합니다. 특히 타입스크립트에서는 다양한 예외 처리 기법을 활용하여 안정적인 코드를 작성할 수 있습니다.

1. try/catch문 활용

가장 기본적인 예외 처리 방법은 try/catch문을 사용하는 것입니다. 함수나 메서드 내에서 예외가 발생할 수 있는 부분을 try블록 안에 작성하고, 발생한 예외를 catch블록에서 처리할 수 있습니다.

예시:

function divide(a: number, b: number): number {
  try {
    if (b === 0) {
      throw new Error('Divisor cannot be 0');
    }
    return a / b;
  } catch (error) {
    console.error(error);
    return -1;
  }
}

2. Jest를 이용한 테스트

타입스크립트에서는 Jest와 같은 테스팅 프레임워크를 활용하여 예외 처리를 보다 편리하게 할 수 있습니다. Jest를 사용하면 expect문을 통해 예외 발생을 테스트하는 방법 등 다양한 기능을 사용할 수 있습니다.

예시:

function divide(a: number, b: number): number {
  if (b === 0) {
    throw new Error('Divisor cannot be 0');
  }
  return a / b;
}

test('divide', () => {
  expect(() => divide(10, 0)).toThrow('Divisor cannot be 0');
});

3. 커스텀 에러 타입 활용

타입스크립트에서는 커스텀 에러 타입을 정의하여 특정 예외 상황을 구분할 수 있습니다. 이를 통해 각각의 예외에 대해 보다 구체적인 처리를 할 수 있으며, 코드의 가독성과 유지보수성을 높일 수 있습니다.

예시:

class DivideByZeroError extends Error {
  constructor(message: string) {
    super(message);
    this.name = 'DivideByZeroError';
  }
}

function divide(a: number, b: number): number {
  if (b === 0) {
    throw new DivideByZeroError('Divisor cannot be 0');
  }
  return a / b;
}

마무리

위 예제들은 타입스크립트에서의 예외 처리에 대한 몇 가지 기본적인 기법을 다룬 것입니다. try/catch문을 사용하여 예외를 처리하거나 Jest를 통해 테스트하는 방법, 그리고 커스텀 에러 타입을 활용하는 방법 등을 적절히 활용하여 안정적이고 견고한 코드를 작성할 수 있습니다.

더 많은 정보는 타입스크립트 공식 문서를 참고할 수 있습니다.