Jest - Mocking이란? (2)
서론
저번 시간에는 테스트에서 사용하는 Mocking에 대해서 알아보았다.
그리고 Jest에서 지원하는 Mocking 함수 중 jest.fn에 대해서 알아보기도 했다.
오늘은 Jest에서 지원하는 또 다른 Mocking 함수에 대해서 알아보자.
jest.mock
jest.fn 메소드는 Mocking 함수를 개별적으로 처리할 때 사용하는 함수다.
반대로 jest.mock 메소드는 Mocking 함수를 그룹으로 한꺼번에 처리할 때 사용하는 함수다.
예를 들어 정보를 저장하는 함수, 정보를 받아오는 함수, 정보를 삭제하는 함수 등 여러가지 함수가 있다고 치자.
그렇다면 해당 함수를 Test 코드에서 Mocking 함수로 표현하려면 어떻게 해야겠는가?
javascript1const mockFunction = { 2 saveData : jest.fn(), 3 reqeustData : jest.fn(), 4 deleteData : jest.fn(), 5 // 이하 여러개의 함수 6}
위 처럼 하나하나 표현해야할 것이다.
이처럼 여러개의 함수를 그룹으로 묶어서 표현할 때 사용하는 것이 jest.mock 함수이다.
javascript1const User = request('./user.service'); 2ject.mock('./user.service'); 3 4User.saveData()
위와 같이 자동으로 user.service 에 있는 함수를 Mocking 함수로 만들어서 사용할 수 있게 해준다.
jest.spyOn
Mocking에는 스파이라는 개념이 있다.
이는 스파이처럼 몰래 함수를 호출하는 개념으로, 함수의 호출 여부와 어떻게 호출 하였는지를 알아내는데 사용하는 메소드 이다.
다른 메소드와의 차이는 임의로 Mocking 함수를 만들어 대체하는 것이 아니라, 실제 함수를 호출한다는 점이 차이점이다.
그렇기때문에 실제 함수에서 리턴되는 값을 알 수가 있다.
마치며
오늘은 Jest에서 지원하는 나머지 Mocking 함수에 대해서 알아보았다.
TDD 방식을 공부하려고하니 알아야하는 개념이 점점 늘어나는 기분이다.