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

서론

타입스크립트로 개발된 프로젝트에서 단위 테스트는 소프트웨어 품질을 유지하기 위해 중요한 부분입니다. 단위 테스트를 작성할 때는 어떤 범위를 고려해야 하는지에 대해 알아보겠습니다.

1. 함수 단위 테스트

가장 기본적인 단위 테스트는 함수 단위 테스트입니다. 함수의 입력과 반환 값을 검증하여 해당 함수가 예상한 대로 동작하는지 확인합니다. 이때 단위 테스트 프레임워크인 Jest나 Mocha 등을 활용하여 테스트 코드를 작성합니다.

// 예시: 함수 단위 테스트
import { sum } from './math';

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

2. 모듈 단위 테스트

타입스크립트에서는 모듈 단위로 코드를 구성하기 때문에 모듈 단위 테스트도 중요합니다. 모듈의 기능을 테스트하여 각 모듈이 예상대로 동작하는지 확인합니다.

// 예시: 모듈 단위 테스트
import { UserService } from './user-service';

test('getUserName returns the correct user name', () => {
  const userService = new UserService();
  expect(userService.getUserName(123)).toBe('John Doe');
});

3. 외부 의존성 모킹

단위 테스트를 작성할 때는 외부 의존성을 모킹하여 테스트의 격리성을 유지해야 합니다. 의존성 주입이나 모킹 라이브러리를 활용하여 외부 의존성을 가짜 객체로 대체하여 테스트를 수행합니다.

// 예시: 외부 의존성 모킹
import { ProductService } from './product-service';
import { OrderService } from './order-service';
import { orderProduct } from './order-product';

const mockProductService = {
  getProductInfo: jest.fn().mockReturnValue({ id: 123, name: 'Sample Product' }),
};

const orderService = new OrderService(mockProductService);
test('orderProduct creates order with correct product info', () => {
  orderProduct(orderService);
  expect(mockProductService.getProductInfo).toHaveBeenCalled();
});

결론

타입스크립트로 단위 테스트를 작성할 때는 함수 단위 테스트, 모듈 단위 테스트, 외부 의존성 모킹을 고려해야 합니다. 이를 통해 안정적이고 견고한 소프트웨어를 개발할 수 있습니다.

참고 문헌: TypeScript 공식 문서