jest.fn()이란?

Mock 함수를 생성하는 함수, mock의 한글 번역을 보면 ‘모의 고사’할 때 그 모의라는 뜻이 있으며 가짜, 흉내라는 뜻이 있습니다. 그래서 이 Mock 함수가 하는 일은 단위 테스트를 작성할 때, 해당 코드가 의존하는 부분을 가짜로 대체하는 일

단위 테스트는 왜 독릭접이어야 하는가?

의존적인 부분을 구현하기가 까다로울 경우가 있으며, 의존적인 부분의 상태에 따라서 테스트하고자 하는 부분의 테스트 결과가 영향을 받을 수 있기 때문

예를 들어서, 데이터베이스에 데이터를 저장하는 부분을 테스트를 하면,

스크린샷 2024-01-09 오후 1.52.19.png

데이터 전송하는 가운데 Network, I/O 작업, 트랜잭션 생성, 쿼리 전송 등

그리고 테스트 종료 후, 데이터베이스에서 변경 데이터를 직접 원복하거나 트랜잭션 rollback 해줘야 함. 그저 데이터베이스에 데이터를 저장하는 부분 테스트를 위해서 너무 많은 작업이 들어가기 때문에 비효율적

그리고 테스트하는 가운데 데이터베이스가 잠시 죽어 있다면 테스트 결과에도 영향을 미침

그래서 단위 테스트는 특정 기능만 분리해서 독립적으로 사용

jest.fn() 을 이용해서 가짜 함수를 생성 하므로 인해서 의존적인 부분으로 인해 영향을 받는 테스트 상황을 해결할 수 있고, 생성한 가짜 함수는 이 함수에 어떤 일들이 발생했는지, 다른 코드들에 의해서 어떻게 호출되는지를 기억하기 때문에 이 함수가 내부적으로 어떻게 사용되는지 검증할 수도 있다.(= Spy 역햘)

jest.fn() 기본 사용법

스크린샷 2024-01-09 오후 1.57.09.png

스크린샷 2024-01-09 오후 1.57.20.png