[typescript] 에러 핸들링 테스트 작성하기

오늘은 TypeScript 프로젝트에서 에러 핸들링을 테스트하는 방법에 대해 알아보겠습니다. 에러 핸들링은 애플리케이션의 안정성을 유지하는 데 매우 중요하며, 테스트 코드를 작성하여 에러 핸들링이 올바르게 작동하는지 확인할 수 있습니다.

에러 핸들링을 테스트하기 위해 Jest를 사용할 것입니다. Jest는 JavaScript 및 TypeScript를 위한 강력한 테스트 프레임워크로, 에러 핸들링 테스트에 적합한 많은 도구를 제공합니다.

throw 문 사용한 에러 핸들링 테스트

가장 간단한 에러 핸들링 테스트 케이스는 throw 문을 사용하여 특정 조건에서 에러가 발생하는지 확인하는 것입니다. 예를 들어, 다음은 MyService 클래스에서 특정 조건에 따라 에러를 throw하는 메서드의 테스트 코드입니다.

class MyService {
  doSomething(value: string): void {
    if (!value) {
      throw new Error('Value cannot be empty');
    }
    // method implementation
  }
}

describe('MyService', () => {
  test('doSomething should throw error with empty value', () => {
    const service = new MyService();
    expect(() => service.doSomething('')).toThrow(Error);
  });
});

위의 코드에서 우리는 doSomething 메서드가 빈 값에 대해 에러를 throw하는지 테스트하고 있습니다.

try-catch 블록 사용한 에러 핸들링 테스트

때로는 try-catch 블록으로 에러를 핸들링하는 코드를 테스트해야 할 수도 있습니다. 예를 들어, 다음은 MyService 클래스의 특정 메서드가 에러를 try-catch 블록으로 핸들링하는지 테스트하는 코드입니다.

class MyService {
  doSomethingSafely(value: string): string {
    try {
      if (!value) {
        throw new Error('Value cannot be empty');
      }
      return 'Success';
    } catch (error) {
      return 'Error: ' + error.message;
    }
  }
}

describe('MyService', () => {
  test('doSomethingSafely should return error message with empty value', () => {
    const service = new MyService();
    expect(service.doSomethingSafely('')).toBe('Error: Value cannot be empty');
  });
});

위의 코드에서 우리는 doSomethingSafely 메서드가 빈 값에 대해 올바르게 에러를 핸들링하고 있는지 확인하고 있습니다.

이처럼 Jest를 사용하여 TypeScript에서 에러 핸들링을 테스트할 수 있습니다. 올바른 에러 핸들링은 안정성을 향상시키고 사용자 경험을 개선시키는 데 도움이 되므로, 테스트를 통해 에러 핸들링 로직이 올바르게 작동하는지 확인하는 것은 매우 중요합니다.