Mocking 원리

mocking 이란?

( mock = 모조품, 가짜 ) 뜻 그대로 받아들이면 된다.

테스트하고자 하는 코드가 의존하는 function 이나 class에 대해 모조품을 만들어 ‘일단’ 돌아가게 하는 것이다.

왜 가짜로 대체하는가?

테스트 하고싶은 기능이 다른 기능들과 엮여있을 경우 (의존) 정확한 테스트를 하기 힘들기 때문이다.

실제 데이터베이스에 데이터를 넣는 방식으로 테스트를 할 경우, 트랜잭션이 일어나기에 IO 시간도 테스트에 포함되고, 데이터베이스 연결 상태에 따라 테스트가 실패 할 수도 있기 때문이다.

또, 테스트가 실패했을 경우 내가 작성한 컨트롤러 코드의 문제인지, 데이터베이스의 문제인지 알아차리기도 힘들기 때문에 올바른 단위테스트라고 할 수 없다.

Untitled

Mocking 메소드 - jest.fn

Jest는 가짜 함수(mock function)를 생성할 수 있도록 jest.fn() 함수를 제공한다.

mock 함수는 기본적으로 아무것도 안들어있다. (아무런 동작, 리턴을 하지 않는다.

jest.fn 종류