[typescript] 타입스크립트에서의 스파이 (Spy) 개념과 활용법 이해하기

타입스크립트에서의 스파이 (Spy) 개념은 테스트 코드 작성시 매우 유용하며, 주로 함수의 호출을 모니터링하고, 호출된 인자와 반환값을 기록하는 데 사용됩니다. 이 기능은 주로 테스트 더블링이나 모의 객체(Mock)를 구현하거나 함수 추적 등의 목적으로 활용됩니다. 이번 포스트에서는 타입스크립트에서 스파이의 활용법에 대해 살펴보겠습니다.

스파이의 기본 개념

스파이는 특정 함수의 호출과 반환값을 관찰하고 기록하는 역할을 수행합니다. 이를 통해 함수의 호출정보를 확인하고 테스트시 예상대로 동작하는지 확인할 수 있습니다.

스파이의 활용법

함수의 호출 모니터링

아래의 예시 코드는 add 함수의 호출을 모니터링하는 간단한 스파이 구현입니다.

function add(a: number, b: number): number {
  return a + b;
}

const addSpy = jest.fn(add);
addSpy(1, 2);

console.log(addSpy.mock.calls); // 호출된 인자 [ [1, 2] ]

반환값 기록

다음 예시는 반환값을 기록하는 스파이를 구현한 예제입니다.

function multiply(a: number, b: number): number {
  return a * b;
}

const multiplySpy = jest.fn(multiply);
multiplySpy(3, 4);

console.log(multiplySpy.mock.results); // 반환된 값 [{ type: 'return', value: 12 }]

스파이의 활용 장점

마무리

스파이는 테스트 작성이나 함수의 동작을 디버깅할 때 귀중한 도구로 활용될 수 있습니다. 타입스크립트에서 스파이를 잘 활용하여 효율적인 테스트와 디버깅을 수행할 수 있도록 노력해보시기를 권장 드립니다.

참고:

이상으로 스파이 개념 및 활용법에 대해 알아보았습니다. 부족한 부분이 있다면 추가로 학습하여 보왁하시기 바랍니다. 감사합니다.