Jest
환경 구축후에 뜬금 없이 다른 프레임 워크가 나오는가 생각했는데,, 목표는 TDD였다.
이름 그대로 테스트를 하는것이 아주 중요하기 때문에 먼저 알아보는게 아닐까 생각한다.
테스트코드 작성이 중요한 이유
- 수동으로 모든 기능을 확인하는 시간을 줄여준다.
- 버그의 발생을 줄여주거나, 발생한 버그가 다시 발생지 않도록 해준다.
- 코드 수정시 수정한 코드가 다른 코드에 영향을 줘 버그를 발생시키는지를 확인할 수 있게 한다.
- 다른 팀원들에게 신뢰할 수 있는 코드를 공유할 수 있다.
- 서비스를 안정적으로 유지할 수 있게 도와준다.
테스트 코드 작성은 개발 시간이 오래 걸려 당장은 비용이 증가하는 것 처럼 보이지만, 새로운 기능 추가에 의한 사이드 이펙트, 버그 발생 빈도 및 버그의 재발생률, 수동테스트에 걸리는 시간 등 테스트 코드가 없는 서비스가 가지는 문제 비용과 비교하면 비용이 더 저렴할 수 있다.
그래서 이 테스트 코드를 위해 자바 스크립트 테스트 프레임워크인 JEST를 사용하는 것!
Jest 의 장점
페이스북에서 개발, 관리하는 js 테스트 프레임워크로써 단순함에 집중한 프레임 워크이다.
JS 테스트 워크 프레임이므로 리액트 이외 typescript, Node, Vue 등에서도 사용할 수 있다.
리액트에서는 특히 Jest가 많이 사용되고 있는 이유는 리액트를 개발, 관리하는 기업인 페이스북에서 만들었기 때문이고 리액트를 설치하면 Jest도 함께 설치되기 때문이다.
- 설정이 필요없다.
- 많은 테스트 프레임워크들이 테스트를 하기 위해 많은 설정을 해야하지만 Jest는 이런 설정때문에 테스트를 쉽게 시작하지 못하고, 테스트에 집중하지 못하는 단점을 보완하기 위해 제로설정을 지향하고 있다.
- 스냅샷
- 테스트하다 보면 값을 일일히 확인하기 히믄 큰 js 오브젝트가 존재할 때가 있는데 이것을 그대로 저장 후 추후에 값이 변경되면 에러를 표시하는 스냅샷 기능을 제공한다.
- 리액트에서는 이 스냅샷 기능을 통해 랜더링된 컴포넌트의 변경사항이 있는지 체크한다.
- 모의 객체
- Jest는 쉽게 모의객체(Mocking)을 생성할 수 있다. 이를 통해 테스트 범위를 벗어나는 객체들을 간단하게 모의 객체로 만들어 실제로 테스트해야 할 부분을 집중해서 테스트 할 수 있게 돕는다.
- 테스트 코드의 분리
- Jest의 테스트 코드는 완전히 분리되어있고, 이렇게 분리된 테스트는 동시에 실행 할 수 있도록 한다.
- 분리된 테스트를 제공하는 Jest는 테스트 코드를 동시에 실행해 빠른 성능을 제공한다.
- 간단한 API
- 쉽고 간단하게 트스트 할 수 있는 API를 제공하고 있다
- --coverage 옵션을 통해 코드 커버리지를 간단하게 확인할 수 있다.
이와 같은 장점들 때문에 리액트의 테스트에 Jest가 많이 사용되고 있다.