[javascript] Jest에서의 모듈 모킹 기능은 어떻게 사용하는가?

Jest는 JavaScript 테스트 프레임워크로, 모듈 모킹(Mocking) 기능을 제공하여 테스트 시에 외부 종속성을 가짜로 대체할 수 있습니다. 이는 테스트를 더 격리되게 만들고, 테스트 결과를 예측 가능하게 만들어줍니다.

Jest에서 모듈 모킹을 사용하기 위해 다음과 같은 단계를 따를 수 있습니다.

  1. 모듈 모킹 라이브러리 설치

    Jest는 자체적으로 모듈 모킹 기능을 제공하지만, 추가적인 모듈 모킹 라이브러리를 설치하여 더 편리하게 사용할 수도 있습니다. 가장 많이 사용되는 모듈 모킹 라이브러리로는 Jest Mock이 있습니다. 다음 명령을 사용하여 Jest Mock을 설치합니다.

    npm install --save-dev jest-mock

  2. 모듈 모킹 설정

    테스트 파일에서 모듈 모킹을 사용하기 위해 다음과 같은 단계를 따릅니다.

    • 모듈을 가져옵니다.
    • jest.mock() 함수를 사용하여 모듈을 모킹합니다.
    • 모듈이 제공하는 함수 또는 메서드를 모킹한 가짜 함수로 대체합니다.

    예를 들어, axios 모듈의 get 메서드를 모킹하고 싶다면 다음과 같이 작성할 수 있습니다.

    import axios from 'axios';
    
    jest.mock('axios');
    
    axios.get = jest.fn().mockResolvedValue({ data: 'mocked data' });
    

    이렇게하면 axios.get 호출 시 항상 가짜 응답을 반환하는 모킹 함수로 대체됩니다.

  3. 모듈 모킹 사용한 테스트 작성

    이제 모듈 모킹을 사용하여 테스트를 작성할 수 있습니다. 예를 들어, axios 모듈을 사용하는 함수를 테스트하고 싶다면 다음과 같이 작성합니다.

    import axios from 'axios';
    import fetchData from './fetchData';
    
    jest.mock('axios');
    
    describe('fetchData', () => {
      it('should fetch data correctly', async () => {
        axios.get.mockResolvedValue({ data: 'mocked data' });
    
        const result = await fetchData();
        expect(result).toBe('mocked data');
      });
    });
    

    이렇게하면 fetchData 함수를 테스트할 때 axios.get을 모킹한 가짜 응답을 사용할 수 있습니다.

참고 자료: