테스트 코드 작성의 이유
테스트 코드를 작성해야하는 이유...?
- 작성한 코드가 의도한 대로 작동하는지 검증할 수 있다.
- 코드 변경 시, 변경 부분으로 인한 영향도를 쉽게 파악할 수 있다.
- 코드 리팩토링 시 기능 구현이 동일하게 되었다는 판단을 내릴 수 있다.
- 코드 변경 시, 변경 부분으로 인한 영향도를 쉽게 파악할 수 있다.
테스트 코드를 작성 시 얻는 장점이 너무나 많기 때문에 작성하지 않을 이유가 없다...!
그렇다면 테스트 코드는 어떻게 작성하는 것인가...!
우선 테스트 코드에는 두 가지 종류가 있다.
-
단위 테스트 (Unit Test)
클래스 하나, 함수 하나와 같이 작은 부분에 대한 테스트
최대한 간단하고 디버깅 쉽도록 테스트 한다.
-
통합 테스트 (Integration Test) / 인수 테스트 (Acceptance Test)
여러 모듈 간 의도대로 협력하는 지에 대한 테스트
비교적 단위 테스트보다 복잡하고 시간이 많이 소요(관련 모듈 설정 등을 포함하기 때문에)된다.
프로그램에 필요한 외부 환경(서드파티 라이브러리, DB)까지 묶어서 검증할 수 있다.
따라서 단위 테스트에서 발견하기 어려운 버그를 찾을 수도 있다.
이 외에도 필요시 기능 테스트(Functional Test)와 같이 다양한 테스트가 추가될 수 있다.
내가 오늘 작성한 것은 통합 테스트
통합 테스트 작성 방법
우선 테스트 코드 시 사용할 데이터들을 정리해봤다
![](https://velog.velcdn.com/images/keeper1826/post/1a301c7e-4608-41e6-b0f0-cd32e189d5ad/image.png)
그리고 supertest를 이용하여 통합 테스트 코드를 작성한다
- HTTP assertion을 쉽게 만들어주는 라이브러리
- 클라이언트 사이드 HTTP request 라이브러리 인 superagent를 기반으로 만들어짐
superTest의 사용법은 이 블로그를 참고 (정리를 잘 해놓았다)
https://velog.io/@modolee/supertest-user-guide-01
나의 통합 테스트 최종 코드
![](https://velog.velcdn.com/images/keeper1826/post/4cdef4f0-48b5-4359-965d-8cf9b8017525/image.png)