For the complete documentation index, see llms.txt. This page is also available as Markdown.

서비스 테스트 (사용 중단)

서비스는 주로 다음을 사용하여 테스트해야 합니다 API 테스트, 즉 DB와 API를 모킹한 상태로 외부 의존성을 두고 서비스를 실행하여, 서비스의 API를 통해 서비스 코드를 검증하는 테스트 집합입니다. 단위 테스트 코드의 유틸리티 섹션처럼 검증해야 할 경우의 수가 많거나 성능이 좋지 않아 API 테스트로는 테스트할 수 없거나 어렵게 만드는 코드가 발견된 경우 포함해야 합니다. 이에 대한 이유는 마이크로서비스 아키텍처로 인해 책임이 줄어들어 테스트해야 할 코드량이 감소하고, 서비스 로직이 단순하기 때문에, 서비스가 올바르게 동작하는지 확인할 때 API 테스트가 시간 대비 가치가 가장 높은 선택이기 때문입니다.

테스트 스택

서비스는 다음을 사용하여 테스트해야 합니다 Jest 를 주요 테스트 프레임워크로 사용하고 supertest 를 서버를 구성하고 테스트하는 프레임워크로 사용합니다.

디렉터리 구조

서비스에는 API 테스트와 단위 테스트가 모두 있을 수 있으므로, 테스트가 들어갈 위치도 하나 이상이 됩니다:

  • 단위 테스트는 테스트 대상 파일 또는 모듈과 같은 위치에, 같은 이름으로 두되 확장자는 spec.ts 로 ts.

  • 대신 작성해야 합니다. API 테스트는 서비스 전체의 코드를 검증하므로, 반드시 test 디렉터리, 즉 루트 경로에 배치해야 합니다. 파일은 테스트할 서비스 리소스의 이름을 따서 이름이 지정됩니다. 즉, API 테스트가 리소스 books를 테스트한다면, 보통 /books 아래에 있고, 파일 이름은 반드시 books.spec.ts 이어야 하며 반드시 test 디렉터리에 배치되어야 합니다.

무엇을 테스트할지

  • 라우트에 적용된 미들웨어(auth 등)가 라우트가 예상대로 동작하는지 확인합니다.

  • 컨트롤러 로직이 우리가 기대하는 대로 라우트가 동작하는지 확인합니다.

API 테스트 서비스

앞서 언급했듯이, API 테스트는 Jest와 supertest를 사용하여 수행됩니다.

개발자가 API 테스트를 어떻게 작성하는지 보여주기 위해 다음 예시를 살펴보겠습니다:

예시에서 서로 다른 HTTP 메서드, GET과 POST를 사용하는 하나의 라우트를 볼 수 있습니다. 두 엔드포인트는 모두 같은 리소스인 books를 참조하므로, 이름이 books.spec.ts 인 파일을 test 디렉터리 아래에 생성하여 해당 테스트를 담아야 합니다.

모든 라우트와 다양한 실행 흐름은 철저하게 테스트해야 합니다. 개발자가 이러한 엔드포인트에 대해 테스트해야 하는 경우는 다음과 같습니다:

  • 모든 책을 요청하면 200과 모든 책 목록을 반환하며 동작합니다.

  • 특정 저자의 모든 책을 요청하면 200과 해당 저자의 모든 책 목록을 반환하며 동작합니다.

  • 인증되지 않은 상태로 책을 게시하면 실패하고, 401과 오류 메시지를 반환합니다.

  • 인증된 상태로 책을 게시하면 동작하고, 200을 반환하며 책을 삽입합니다.

이 사례들은 분명 그들의 its와 그 it에 대한 기대값에는 최소한 기대 응답 상태 그리고 무엇이 응답 본문에 예상되는지 (있는 경우).

이 엔드포인트 테스트를 작성하는 방법은 다음과 같습니다:

마지막 업데이트