[typescript] 타입스크립트에서의 스텁 (Stub) 개념과 활용법 이해하기
타입스크립트에서 스텁은 테스트에서 실제 코드를 대체하여 모의(mock) 객체나 메소드를 만들어주는 개념입니다. 스텁은 특정한 시나리오에 따른 테스트를 작성할 때 유용하게 활용될 수 있습니다. 이번 글에서는 타입스크립트에서의 스텁 개념과 활용법에 대해 살펴보겠습니다.
스텁의 이점
1. 의존성 제거: 외부 서비스나 모듈에 의존하는 코드를 테스트할 때, 스텁을 활용하여 의존성을 제거하고 테스트를 단순화할 수 있습니다. 이렇게 함으로써 테스트의 안정성과 신뢰도를 높일 수 있습니다.
2. 병목 현상 제거: 실제 외부 리소스에 의한 지연 현상을 피하고 테스트 속도를 높일 수 있습니다. 스텁을 사용하여 가짜 데이터를 생성하여 느린 외부 소스를 대체함으로써 효율적인 테스트를 할 수 있습니다.
3. 특정 상황 시나리오 테스트: 특정한 상황에 대한 테스트를 원할 경우, 해당 상황을 시뮬레이션하여 테스트할 수 있습니다.
타입스크립트에서의 스텁 사용 예시
아래는 타입스크립트에서의 스텁을 사용한 간단한 예시 코드입니다.
// UserService.ts
export class UserService {
async getUser(id: number): Promise<User> {
// 외부 API 호출 등의 로직
}
}
// UserStub.ts
export class UserStub {
async getUser(id: number): Promise<User> {
return { id, name: "John Doe" }; // 스텁 데이터 반환
}
}
// UserTest.ts
import { UserService } from './UserService';
import { UserStub } from './UserStub';
const userService = new UserService();
const userStub = new UserStub();
// 테스트 시 실제 UserService 대신 UserStub을 사용
const user = await userStub.getUser(123);
// 테스트 코드 작성
위의 예시에서 UserStub
클래스는 UserService
의 getUser
메소드를 대신하여 스텁 데이터를 반환합니다. 이를 활용하여 간단한 테스트를 작성할 수 있습니다.
결론
스텁은 테스트 코드 작성 시에 외부 의존성을 관리하고 특정한 시나리오를 테스트하는 데 유용한 도구입니다. 타입스크립트에서도 스텁을 적절히 활용하여 효율적이고 안정적인 테스트를 작성할 수 있습니다.