Jest Mock Function (Mocking) 사용해보기

REASON·2022년 11월 11일
0

STUDY

목록 보기
115/127

Jest에서 가짜 함수(Mock)를 만들어서 테스트하는 방법

mock 함수는 어떻게 호출 되었는지, 몇 번 호출되었는지,
함수의 파라미터로 어떤 인수가 넘어왔는지 확인할 수 있는 유용한 기능을 제공한다.

jest.fn()

jest에서 mock 함수를 만드려면 jest.fn()을 호출하면 된다.

const mockFn = jest.fn();

함수가 몇 번 호출되었는지 확인하기

const mockFn = jest.fn();
mockFn(1);
mockFn(2);

test('✨ mockFn은 2번 호출됩니다!', () => {
  console.log(mockFn.mock.calls);
  expect(mockFn.mock.calls.length).toBe(2);
});

mock.calls.length 를 통해 함수가 몇 번 호출되었는지 확인할 수 있다.

함수의 파라미터로 전달된 값 확인하기

const mockFn = jest.fn();
mockFn(1);
mockFn(2);

test('✨ mockFn가 두번째 호출 됐을 때 들어온 인수는 2입니다.', () => {
  expect(mockFn.mock.calls[1][0]).toBe(2);
});

함수의 리턴 값 확인하기

Mock함수에 mockFn.mockReturnValue('리턴값') 를 사용하면 어떤 값을 리턴하는지 정해줄 수도 있다.

const mockFn2 = jest.fn((n) => n + 1);
mockFn2(1);

test('✨ mockFn의 반환 값은 2입니다.', () => {
  expect(mockFn2.mock.results[0].value).toBe(2);
});

Mock함수는 DB와 같이 테스트 코드를 직접 작성하기 어려울 때 사용되는 경우가 많다.

아직은 너무 생소하지만 써보면 익숙해지겠지........


참고 자료
Jest 공식문서
How To Test #1. Unit Test (feat. jest)

0개의 댓글