e2e 테스트를 도입해보자.
서버는 내가 띄우고 있는 것은 아니어서 그냥 따로 test 를 만들어서 진행하려고 한다.
E2E test
- 목적 : 실제 app의 흐름을 사용자 관점에서 전체적으로 검증
- 대상 : app 의 엔드포인트, UI 등
- 특징 :
- 보통 애플리케이션 전체를 실행한 상태에서 테스트
- 외부 환경(DB, 네트워크 등) 과 상호작용을 포함
- 주로 요청/응답 흐름을 검증(예 : supertest 와 같은 라이브러리 사용)
- 테스트 시간과 복잡도가 상대적으로 높음
단위 테스트 Unit test
- 목적 : 개별 모듈, 함수, 클래스의 동작을 검증
- 대상 : 특정 로직, 메서드, 컴포넌트
- 특징 :
- 독립적으로 동작하도록 외부 의존성을 Mocking
- 주로 jest 의 내장 기능 (expect, mock, spy0n) 을 사용
차이점
단위 테스트 | E2E 테스트 | |
대상 | 개별 모듈/함수를 중심으로 테스트 | 애플리케이션의 엔드포인트 (API/전체 흐름) 테스트 |
실행 환경 | Mock 환경에서 독립적으로 동작 | 실제 애플리케이션 실행 후 요청을 주고받는 환경 필요 |
테트스 위치 | 단위 테스트 파일 ( 주로 *.spec.ts , src 내부에 위치) | E2E 테스트 파일 (주로 *.e2e-spec.ts , test 디렉토리에 위치) |
Jest 에서 E2E 와 다른 테스트를 어떻게 구분할까?
Jest 는 testRegex 나 testMatch를 통해 어떤 파일이 테스트인지 구분한다.
- 단위 테스트:
{
"testRegex": ".*\\.spec\\.ts$",
"rootDir": "src"
}
- E2E 테스트 :
{
"testRegex": ".*\\.e2e-spec\\.ts$",
"rootDir": "test"
}
Jest 에서 두 테스트를 실행하는 방법
단위 테스트
- package.json에 아래 스크립트 추가:
"scripts": {
"test": "jest"
}
E2E 테스트
- package.json에 E2E 스크립트 추가
"scripts": {
"test:e2e": "jest --config jest-e2e.json"
}
Jest의 기본 동작
Jest는 기본적으로 test 폴더 및 그 하위 폴더에 있는 .spec.ts 또는 .test.ts 파일을 인식한다.
따라서 새로운 폴더를 추가하고 그 안에 테스트 파일을 넣으면, 별다른 설정 없이도 Jest는 해당 파일을 자동으로 찾아 실행할 수 있다.
예를 들어:
- test
- app.e2e-spec.ts
- new-folder
- new-test.spec.ts
위 구조처럼 new folder 를 추가하고 그 안에 new-test.spec.ts파일을 작성하면, Jest 는 기본적으로 이 파일을 찾아 테스트를 실행한다.
pakcage.json 에서 jest 필드 사용
- 설정 위치 : package.json 의 jest 필드에 직접 설정을 정의한다.
- 적용 대상 : Jest 가 실행될 때 별도 설정 파일이 지정되지 않으면 이 설정이 기본으로 사용
- 루트 변경 효과 :
- rootDir : "tset" 로 설정하면 test 디렉토리를 기준으로 테스트 파일을 탐색한다.
- testRegex 와 결합하여 test 디렉토리 내부의 파일만 검색하게 된다.
- 특징 :
- jest 필드는 프로젝트 전반에서 Jest 설정을 관리하기 쉽지만, e2e 테스트처럼 특정 환경을 위한 별도 설정이 필요하면 유연성이 부족할 수 있다.
jest-e2e.json 사용
- 설정 위치 : 별도 설정 파일 (jest-e2e.json) 에 정의
- 적용 방법 : Jest 실행 시 --config 옵션으로 해당 설정 파일을 명시적으로 지정해야 한다.
jest --config jest-e2e.json
- 루트 변경 효과
- jest-e2e.json 에 rootDir을 정의하면, 해당 설정 파일이 적용된 테스트 환경에서만 루트를 변경한다.
- 예를 들어, rootDir : "test" 로 설정하면 e2e 테스트 실행 시에만 test 디렉토리를 기준으로 동작한다.
- 특징 :
- e2e 테스트나 유닛 테스트 처럼 서로 다른 테스트 환경에 대해 별도의 설정을 적용할 수 있다.
- 다른 테스트 환경에 영향을 주지 않으므로 더 유연하다.
Jest의 파일 탐색 방식
1. 기준 디렉토리 rootDir
- Jest 는 설정된 rootDir 을 기준으로 파일을 탐색한다.
- 기본값은 process.cwd() (현재 작업 디렉토리) 이며, 명시적으로 설정되지 않으면 프로젝트의 루트 디렉토리가 된다
2. 테스트 파일 매칭
- testRegex : 파일 이름이 정규식과 일치하면 테스트 파일로 간주한다
- testMatch : 특정 경로 패턴에 맞는 파일을 지정한다.
3. 무시되는 파일
- testPathIgnorePatterns : 지정된 패턴과 일치하는 경로의 파일을 테스트에서 제외
- 기본적으로 node_modules 디렉토리는 제외된다.
'Web > TIL' 카테고리의 다른 글
프론트엔드 코드 난독화 | 보안과 효율성 (3) | 2024.12.04 |
---|---|
Android studio 없이 안드로이드 기기 무선 디버깅 하기 (0) | 2024.11.25 |
에어테이블 소개 : 임의 DB 조작 툴 (2) | 2024.11.24 |
[OS_01] OS란 무엇이며, 핵심 기능은? (1) | 2024.10.27 |
[OS_02,04] 프로세스 상태, 문맥교환 (0) | 2024.10.27 |