[typescript] 타입스크립트 단위 테스트 작성 시 모의 객체(Mock Object) 활용 방법

소프트웨어 개발에서 단위 테스트는 기능의 정확성을 검증하고 코드를 안전하게 리팩터링 하는 데 중요한 역할을 합니다. 타입스크립트에서 단위 테스트를 작성할 때는 종종 외부 의존성을 갖는 코드를 테스트해야 하는데, 이때 모의 객체(Mock Object)를 활용하면 테스트를 보다 쉽게 작성할 수 있습니다.

이 글에서는 타입스크립트 단위 테스트에서 모의 객체를 생성하고 활용하는 방법에 대해 알아보겠습니다.

모의 객체(Mock Object)란?

모의 객체는 실제 객체와 비슷하게 동작하지만, 프로그래머가 직접 제어할 수 있는 객체입니다. 모의 객체는 실제 의존성을 완전히 제거하고 테스트 중에 의도한 대로 동작하도록 만들 수 있습니다.

jest를 이용한 모의 객체 작성

jest는 타입스크립트 프로젝트에서 단위 테스트를 작성하고 실행할 수 있도록 도와주는 테스트 프레임워크입니다. jest를 사용하여 모의 객체를 생성하고 다양한 상황을 시뮬레이션할 수 있습니다.

// UserService.ts
export class UserService {
  async getUserById(id: number) {
    // Some async operation
  }
}
// UserService.test.ts
import { UserService } from './UserService';

test('getUserById', async () => {
  const userService = new UserService();
  const mockUser = { id: 1, name: 'John Doe' };
  
  userService.getUserById = jest.fn().mockResolvedValue(mockUser);
  
  const result = await userService.getUserById(1);
  
  expect(result).toEqual(mockUser);
});

위 예제에서는 UserService 클래스의 getUserById 메서드를 테스트하는 중에 jest.fn()을 사용하여 모의 함수를 생성했습니다. 이 모의 함수는 실제로 동작하지 않지만, mockResolvedValue를 사용하여 원하는 값을 반환할 수 있습니다.

마무리

타입스크립트에서 단위 테스트를 작성할 때 모의 객체를 활용하면 외부 의존성을 제거하고 테스트를 더욱 간편하게 작성할 수 있습니다. jest와 같은 테스트 프레임워크를 이용하여 모의 객체를 활용하는 것은 효과적인 테스트 작성 방법 중 하나입니다.

이상으로 타입스크립트 단위 테스트에서 모의 객체를 활용하는 방법에 대해 알아보았습니다. 부가적인 정보가 필요하시다면 jest 공식 문서를 참고해보세요.