[javascript] Jest에서의 모듈 모킹 기능은 어떻게 사용하는가?
Jest는 JavaScript 테스트 프레임워크로, 모듈 모킹(Mocking) 기능을 제공하여 테스트 시에 외부 종속성을 가짜로 대체할 수 있습니다. 이는 테스트를 더 격리되게 만들고, 테스트 결과를 예측 가능하게 만들어줍니다.
Jest에서 모듈 모킹을 사용하기 위해 다음과 같은 단계를 따를 수 있습니다.
-
모듈 모킹 라이브러리 설치
Jest는 자체적으로 모듈 모킹 기능을 제공하지만, 추가적인 모듈 모킹 라이브러리를 설치하여 더 편리하게 사용할 수도 있습니다. 가장 많이 사용되는 모듈 모킹 라이브러리로는 Jest Mock이 있습니다. 다음 명령을 사용하여 Jest Mock을 설치합니다.
npm install --save-dev jest-mock
-
모듈 모킹 설정
테스트 파일에서 모듈 모킹을 사용하기 위해 다음과 같은 단계를 따릅니다.
- 모듈을 가져옵니다.
jest.mock()
함수를 사용하여 모듈을 모킹합니다.- 모듈이 제공하는 함수 또는 메서드를 모킹한 가짜 함수로 대체합니다.
예를 들어,
axios
모듈의get
메서드를 모킹하고 싶다면 다음과 같이 작성할 수 있습니다.import axios from 'axios'; jest.mock('axios'); axios.get = jest.fn().mockResolvedValue({ data: 'mocked data' });
이렇게하면
axios.get
호출 시 항상 가짜 응답을 반환하는 모킹 함수로 대체됩니다. -
모듈 모킹 사용한 테스트 작성
이제 모듈 모킹을 사용하여 테스트를 작성할 수 있습니다. 예를 들어,
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
을 모킹한 가짜 응답을 사용할 수 있습니다.
참고 자료:
- Jest 공식 문서: Mock Functions
- Jest Mock 라이브러리: jest-mock