[Jest] Mocking 간단 정리

js43o·2022년 11월 4일
0
post-custom-banner

Mocking이란?

테스트 과정에서 실제 객체를 대신할 가짜 객체를 만드는 것. 실제 객체를 이용해 테스트를 하기 번거롭거나 불가능할 때 mocking이 필요하다.
ex) DB 통신 함수 테스트 시, 실제 DB 대신 가짜 DB를 만든 후 요청을 보내서 예상한 결과가 나오는지 확인

Jest에서는 여러 가지 mocking 관련 함수들을 제공한다.

1) Expect

expect(value)

  • 테스트하고자 하는 개체의 실행값을 value에 삽입.
  • .toBe(value), .toBeCalledWith(arg1, ...) 등의 메서드를 붙여서 기댓값과 같은지 파악함.

2) Jest method

jest.fn()

  • jest mock 함수를 반환.
  • import로 불러온 외부 모듈을 덮어쓸 수 있다.
const Utils = require("...");
Utils.func = jest.fn();

jest.spyOn(object, methodName)

  • 특정 object의 method의 호출을 기록을 추적하는 jest mock 함수를 반환.
  • 실제 함수를 mocking 하지 않고 호출 인자, 호출 횟수 등을 파악하고자 할 때 사용함.
const spy = jest.spyOn(video, 'play');
const isPlaying = video.play();

expect(spy).toHaveBeenCalled();
expect(isPlaying).toBe(true);

3) Mock Functions

mockFn.mockReturnValue(value)

  • mocking 함수 호출 시 반환할 값을 정의한다.
    ex) getThree.mockReturnValue(3);

mockFn.mockImplementation(fn)

  • mocking 함수의 구현을 직접 정의한다.
    ex) makeDouble.mockImplementation(a => a * 2);

mockFn.mockClear()

  • 설정한 mocking 관련 항목을 모두 지운다.

Jest 공식 Docs 페이지

profile
공부용 블로그
post-custom-banner

0개의 댓글