[typescript] 테스트 더블 (Mock, Stub, Spy) 개념과 활용법 이해하기

목차

테스트 더블 소개

테스트 더블은 실제 의존성을 대체하는 객체를 가리키는 용어로, 소프트웨어 테스트에서 의존성을 가짜로 대체하여 테스트를 간단하게 만들어줍니다. 이는 테스트 환경을 구축할 때 실제 의존성을 가진 객체를 제거하여 테스트를 빠르고 격리된 환경에서 진행할 수 있도록 합니다.

Mock, Stub, Spy의 개념

각 더블의 활용법

Jest를 활용한 예시

// UserService.ts
export default class UserService {
  public getUserById(id: number): User {
    // Implementation to retrieve user by id from database
  }
}

// User.spec.ts
import UserService from './UserService';

test('getUserById should be called once', () => {
  const userService = new UserService();
  const spy = jest.spyOn(userService, 'getUserById');
  userService.getUserById(1);
  expect(spy).toHaveBeenCalledTimes(1);
});

위 예시에서는 Jest를 사용하여 UserService의 getUserById 메서드가 한 번 호출되었는지를 확인하는데 Spy를 활용하였습니다. 이를 통해 getUserById 메서드의 호출 여부를 확인하고 기록할 수 있습니다.

테스트 더블(Mock, Stub, Spy) 개념을 활용하면 복잡한 의존성을 가진 객체를 간단히 대체하여 테스트를 수행할 수 있습니다. 이를 통해 효과적인 유닛 테스트를 작성할 수 있으며, 코드의 품질과 안정성을 향상시킬 수 있습니다.

이상으로 테스트 더블에 대한 개념과 활용법에 대해 살펴보았습니다. 부족한 부분이 있다면 추가 조사 후 보완하도록 하겠습니다.