SpyOn이란?

김민수·2024년 1월 21일

테스트코드

목록 보기
2/3
post-thumbnail

jest.spyOn은 Jest 테스트 프레임워크에서 제공하는 함수로, 특정 객체의 메서드를 spyOn(간첩)하여 해당 메서드 호출에 대한 정보를 수집하고 제어할 수 있게 해줍니다. 이를 통해 해당 메서드가 호출되었는지, 호출 횟수는 몇 번인지, 어떤 매개변수로 호출되었는지 등을 확인하거나, 특정 메서드의 반환값을 가로채거나 변경할 수 있습니다.

주로 테스트 시에 사용되며, 모의 객체(Mock)를 생성하거나 특정 객체의 행위를 감시하고 테스트하는 데 유용합니다. 예를 들어, 다음은 jest.spyOn을 사용하여 특정 객체의 메서드를 spyOn 하는 예시입니다.

// 가정해보자: 특정 객체의 메서드
class Calculator {
  add(a, b) {
    return a + b;
  }
  subtract(a, b) {
    return a - b;
  }
}

// Calculator 객체의 add 메서드를 spyOn하여 감시
test('spyOn을 사용하여 add 메서드 감시', () => {
  const calculator = new Calculator();
  
  // spyOn을 통해 add 메서드를 감시
  const spyOnAdd = jest.spyOn(calculator, 'add');
  
  // 객체의 add 메서드를 호출
  calculator.add(2, 3);
  
  // spyOnAdd를 통해 호출된 횟수, 호출된 매개변수 등 확인 가능
  expect(spyOnAdd).toHaveBeenCalledTimes(1);
  expect(spyOnAdd).toHaveBeenCalledWith(2, 3);
  
  // spy를 리셋하여 원래의 함수를 복원할 수 있음
  spyOnAdd.mockRestore();
});

위 코드에서 jest.spyOn을 사용하여 Calculator 객체의 add 메서드를 spyOn하여 해당 메서드 호출에 대한 정보를 수집하고, toHaveBeenCalledTimestoHaveBeenCalledWith를 사용하여 호출 횟수와 호출된 매개변수를 확인합니다. 또한, mockRestore를 통해 spyOn한 메서드의 원래 동작을 복원할 수 있습니다.

이를 통해 Jest의 spyOn을 사용하면 테스트 중에 객체의 특정 메서드를 감시하고 제어할 수 있어 테스트 작성 및 디버깅을 편리하게 할 수 있습니다.

profile
모바일 & 백엔드 개발자

0개의 댓글