[javascript] 자바스크립트 테스트 스파이(Spy)란?

자바스크립트에서 스파이(Spy)는 함수나 메서드가 호출될 때 그 호출에 대한 정보를 캡처하고 기록하는 도구입니다. 스파이는 일반적으로 함수가 호출될 때 매개변수, 반환값, 호출 횟수 등과 같은 정보를 수집합니다.

스파이를 사용하면 함수나 메서드의 동작을 추적하거나 테스트할 때 유용합니다. 예를 들어, 함수가 기대한대로 호출되는지 확인하거나, 함수 호출 시 전달되는 매개변수를 검사하는 등의 작업에 활용될 수 있습니다.

자바스크립트 스파이의 예시

다음은 다양한 상황에서 스파이를 활용하는 예시입니다.

1. 단순한 로깅

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

function addSpy(a, b) {
  console.log(`add 함수가 호출되었습니다. 매개변수: ${a}, ${b}`);
  return add(a, b);
}

addSpy(2, 3); // add 함수가 호출되었습니다. 매개변수: 2, 3

2. 호출 횟수 추적

function greet(name) {
  console.log(`안녕하세요, ${name}님!`);
}

let greetSpy = jasmine.createSpy("greetSpy", greet);
greetSpy("진수");
console.log(greetSpy.calls.count()); // 1

3. 반환값 확인

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

let multiplySpy = spyOn(window, "multiply").and.returnValue(10);
console.log(multiply(2, 3)); // 10

결론

자바스크립트 스파이는 함수나 메서드에 대한 호출 정보를 캡처하고 기록하여 테스트, 디버깅, 로깅 등의 다양한 상황에서 유용하게 활용될 수 있습니다. 프로그램의 동작을 추적하고 검증하는 데에 필요한 다양한 도구 중 하나로, 개발자들이 코드를 더 효율적으로 관리할 수 있도록 도와줍니다.

자바스크립트 스파이(Spy) 패턴 참조

#spy #자바스크립트 #테스팅 #디버깅