테스트를 위한 코드도 만들어야 한다고?
뭐야 이 사기꾼! 가짜 DB를 주다니!
아니! 기능도 없이 테스트를 한다고?
기능을 검사해주는 코드를 만들어주는 것(API요청에 대한)
사람이 모든 api를 계속 누르는 것은 귀찮고 시간이 많이 들기에 빠른 시간안에 그 처리를 할 수 있게 해주는 것이다.
초기 배포보다는 업데이트 배포를 위해서 필요한 것이다!!
e2e 테스트를 도와주는 프론트엔드 도구에는 대표적으로 Cypress, Selenium 등이 있습니다..
4. Jest라는 테스트프레임워크를 통해 작성한다.
자바스크립트에서 테스트 코드를 도와주는 프레임워크 중에 하나로
Nest.js에서는 JavaScript 테스트 프레임워크인 jest를 기본 테스트 프레임워크로 지원하고 있다.
Jest 이전에는 여러가지 테스트 라이브러리를 섞어 사용했다. Mock 함수를 만들기 위해 Sinon과 TestDouble같은 Test Mock 라이브러리를 추가로 설치하여 사용하는 것이 그 예이다. 그러나 Jest를 사용하면 거의 모든 기능을 한 번에 지원하기 때문에 아주 효율적인 Test Framework라 할 수 있다.
실제 데이터베이스로 test를 하기가 힘들기 때문에, 하지만 이런 방식으로 테스트를 작성하게 되면 특정 기능만 분리해서 테스트하겠다는 단위테스트(Unit Test)의 근본적인 사상에 부합하지 않게 된다.
Mocking은 실제 객체인 척하는 가짜 객체를 생성해서 구체적으로 구현해야하는 실제 객체 사용보다 훨씬 빠르고, 동일한 결과를 내는 테스트를 작성가능하다.
의존성 주입을 하지 않고 의존성 자체를 Mocking해야하며, Unit Test를 하기 위해 실제 코드가 실행되는 환경과 같은 환경을 조성해줘야 한다.
실제 Test에 사용될 Mocking AppService를 사용하여 독립된 환경의 Controller를 테스트해야 한다.
1) 테스트데이터베이스를 만들기
2) 변수(배열)기반의 테스트데이터베이스
나중에 바쁘고 귀찮아서 테스트를 안만들기에 아예 처음부터 만들고 시작한다.
그리고 기능을 만들고 테스트를 만들면 대충대충 넘어가게끔 만들 수 있기에 그래서 아예
기능보다 테스트코드를 만드는 테스트 문화
를 만들자!!
TDD 개발 과정은 다음과 같다. 코드를 작성할 때 작은 단위를 Testing인 Unit Testing을 진행하며 완성된 로직은 Integration Testing을 진행한다.