[TDD] Jest.fn()

김진수·2021년 9월 15일
0

TDD

목록 보기
2/4
post-thumbnail

Jest.fn() 이란?

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

단위 테스트는 왜 독립적이어야 하나?

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

예를 들어

데이터베이스에 데이터를 저장하는 부분을 테스트 한다면

데이터 전송하는 가운데
Network, i/o 작업, 트랙잭션 생성, 쿼리 전송 등등...
그리고 테스트 종료 후,
데이터베이스에서 변경 데이터를 직접 원복하거나 트랙잭션 rollback 해줘야 하는 ...
그저 데이터베이스에 데이터를 저장하는 부분 테스트를 위해서
너무나 많은 작업이 들어가기 때문에 비효울적일 수 있습니다.

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

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

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

jest.fn() 기본 사용법

  1. Mock(가짜)함수 생성

  2. 가짜 함수 호출(인자를 넘겨서도 가능)

  3. 가짜 함수가 어떠한 결과값(return)을 반환 할지 직접 알려주기

  4. 가짜 함수가 몇번 호출되었고, 어떤인자가 넘어왔는지 검즘

profile
백엔드 개발자

0개의 댓글