mocking과 mock testing
Mock
mock(object)이란 실제의 데이터를 흉내낸 모조품 이라고 생각하면 된다. 우리는 이 Mock을 가지고 프로젝트 개발과 테스트를 더욱 더 원활하게 진행할 수 있다.
Mock을 사용하는 이유
먼저 가장 이상적인 프로젝트 과정으론 기획 -> 백엔드 개발 -> 프론트 개발 이 순차적으로 완벽하게 수행되는게 가장 이상적이고 이대로 진행만 된다면 mocking을 할 필요도 없을 것이다. 하지만 프로젝트 투입 시 백엔드, 프론트 개발자들이 동시에 투입되고 프론트 개발자들은 레이아웃을 다 그리고 api연동을 하면서 몇몇 api들은 개발되기를 기다리는 적이 있을 것이다. 또한 이미 개발 완료되어 연동한 api 조차도 빈번히 수정이 일어나게 되는데 mock이 없다면 프론트엔드 개발자들은 언제 api가 완료되는지 계속 묻거나 데이터를 예측하여 개발하는 수밖에 없을 것이다.
때문에 우리는 api가 개발 왼료될 때까지 기다리지 않고 mock data를 생성하여 테스트가 가능하고 store와 compoenets들을 묶어서 통합 테스트도 가능하다. 또한 mock을 사용하면 api와의 의존성을 제거함으로서 api이 실패 케이스의 원인임을 배제할 수 있어 좀 더 실패 케이스가 명확해진다. 이 외에도 유사 테스트 간에 테스트 코드 중복과 Side Effect(ex) 신용카드 요금 청구, 알림 문자, notification 등)가 있을 수 있는 api의 호출일 경우에도 mocking이 매우 유용하다.
Mocking Test
프론트엔드에서 jest를 통해 mocking test가 가능한데 아래 소스와 같이 확용할 수 있다. ../service 폴더 안의 api 연동하는 파일(모듈)들을 전부 mocking화 한 후 해당 api를 호출하면 mock data가 리턴되고 이를 통해 검증하는 내용이다.