[javascript] Jest에서의 stub 함수 사용 방법은 어떻게 되는가?

Jest는 대표적인 자바스크립트 테스팅 프레임워크로, 기능적인 단위 테스트를 쉽게 작성하고 실행할 수 있게 해줍니다. Jest에서는 stub 함수를 사용하여 다른 함수의 동작을 대체하거나 테스트 시 의도한 결과를 반환할 수 있습니다.

stub 함수를 사용하기 위해서는 jest.fn() 메소드로 함수를 생성하고, mockReturnValue 메소드를 통해 해당 함수의 반환값을 지정할 수 있습니다. 다음은 간단한 예시입니다:

// 테스트 대상 모듈
function fetchData() {
  // API로부터 데이터를 받아옴
  return axios.get('/api/data');
}

// 테스트 코드
test('fetchData 함수 테스트', () => {
  // fetchData 함수를 stub 함수로 대체
  fetchData = jest.fn().mockReturnValue({
    data: 'mocked data',
  });

  // fetchData 함수 실행
  const result = fetchData();

  // 반환된 데이터가 예상 값과 일치하는지 확인
  expect(result.data).toEqual('mocked data');
});

위의 예제에서는 fetchData 함수를 stub 함수로 대체했습니다. 이를 위해 jest.fn()을 사용하여 새로운 함수를 생성하고, mockReturnValue 메소드를 사용하여 반환값을 지정했습니다. 이렇게 하면 원래의 fetchData 함수가 호출되는 대신, 우리가 지정한 반환값으로 대체됩니다.

이제 fetchData 함수를 호출하고 반환된 데이터가 예상된 값과 일치하는지 확인하기 위해 expect 함수를 사용합니다. 테스트 결과는 반환된 데이터가 ‘mocked data’와 일치하는지 여부에 따라 판단됩니다.

이와 같이 Jest에서 stub 함수를 사용하여 테스트 시나리오를 구현하면, 외부 의존성을 갖는 함수의 동작을 완전히 재현하거나 제어할 수 있습니다. 이를 통해 테스트의 안정성과 신뢰성을 높일 수 있습니다.

더 자세한 내용은 Jest 공식 문서를 참고하세요: Jest - Mock Functions