유저 E2E 파일 예시
test/user.e2e-spec.ts
import { Test, TestingModule } from "@nestjs/testing";
import { INestApplication } from "@nestjs/common";
import * as request from "supertest";
import { AppModule } from "../src/app.module";
describe("UserModule (e2e)", () => {
let app: INestApplication;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
// 기본적으로 전체 모듈인 AppModule을 import 하기
imports: [AppModule],
}).compile();
app = module.createNestApplication();
await app.init();
});
afterAll(async () => {
app.close();
});
it.todo("해야할 것");
});
- 기본적으로 전체 모듈인 AppModule을 import 하기
- 앱 모듈안에 모든 모듈이 작성되어있다.
- 전체 애플리케이션을 로드해서 Resolver를 테스트 할 수 있기 때문에 앱모듈 임포트해주기
- 앱 모듈안에 모든 모듈이 작성되어있다.
코드 설명
test/user.e2e-spec.ts
// NestJS에서 제공하는 테스트 유틸리티 가져오기
import { Test, TestingModule } from "@nestjs/testing";
// NestJS 애플리케이션의 인스턴스를 나타내는 인터페이스이다
import { INestApplication } from "@nestjs/common";
// HTTP 서버 테스트를 위한 라이브러리로, NestJS 애플리케이션에 대한 요청을 시뮬레이트한다.
import * as request from "supertest";
// 애플리케이션의 루트 모듈을 가져오기, 이 모듈에는 애플리케이션의 모든 구성 요소가 포함되어 있다.
import { AppModule } from "../src/app.module";
// 테스트 수트를 정의 : describe("UserModule (e2e)", () => { ... })
// 사용자 모듈의 e2e 테스트를 그화하기 위한 것
describe("UserModule (e2e)", () => {
// NestJS 애플리케이션 인스턴스를 저장
let app: INestApplication;
// 테스트가 실행되기 전에 실행될 설정 코드를 정의
beforeEach(async () => {
// Test.createTestingModule 메서드를 사용 테스트 모듈을 생성한다.
const module: TestingModule = await Test.createTestingModule({
// AppModule을 포함시켜 전체 애플리케이션 모듈을 가져온다.
imports: [AppModule],
// compile 메서드를 호출하여 모듈을 컴파일한다.
// 이 단계에서는 종속성 주입이 설정되고 모듈이 완전히 초기화된다.
}).compile();
// 컴파일된 모듈을 기반으로 NestJS 애플리케이션 인스턴스를 생성한다.
app = module.createNestApplication();
// 애플리케이션을 초기화
// 내부적으로 필요한 설정을 모두 완료하고 서버를 준비 상태로 만든다.
await app.init();
});
// test가 돌아간 후에 application이 종료된다
afterAll(async () => {
// application을 종료하는 코드
app.close();
});
});
- 이 코드는 E2E 테스트 환경을 설정하여 테스트가 실행될 때마다 새로운 NestJS 애플리케이션 인스턴스를 생성하고 초기화한다.
- 이를 통해 각 테스트는 독립적으로 실행된다.
- 실제 애플리케이션과 유사한 환경에서 테스트할 수 있다.
'Frontend > E2E' 카테고리의 다른 글
Resolver 테스트 사용법 예제 (0) | 2024.07.15 |
---|---|
[초기설정] 테스트가 끝난 후 데이터베이스 내용 drop하기 (0) | 2024.07.15 |
[초기설정] E2E 설정 구성, 경로 변경하기 (0) | 2024.07.15 |
E2E (End-to-End) (0) | 2024.07.15 |