Jest에서 가짜 함수(Mock)를 만들어서 테스트하는 방법
mock 함수는 어떻게 호출 되었는지, 몇 번 호출되었는지,
함수의 파라미터로 어떤 인수가 넘어왔는지 확인할 수 있는 유용한 기능을 제공한다.
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와 같이 테스트 코드를 직접 작성하기 어려울 때 사용되는 경우가 많다.
아직은 너무 생소하지만 써보면 익숙해지겠지........