Skip to content

Commit 8b1a49d

Browse files
committed
feat: E2E 테스트가 병렬적으로 수행될 수 있도록 구현
- E2E 테스트 속도 54.32% 증가 - 각 테스트가 uuid값으로 임시 테스트 데이터베이스를 생성하고 테스트 완료 후 삭제 - test:e2e명령어 runInBand(순차적 테스트 실행)삭제
1 parent 452222f commit 8b1a49d

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

backend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"test:watch": "jest --watch",
2020
"test:cov": "jest --coverage",
2121
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
22-
"test:e2e": "jest --config ./test/jest-e2e.json --runInBand"
22+
"test:e2e": "jest --config ./test/jest-e2e.json"
2323
},
2424
"dependencies": {
2525
"@nestjs/common": "^10.0.0",

backend/test/setup.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { io } from 'socket.io-client';
1111
import { Member } from 'src/member/entity/member.entity';
1212
import { MemberService } from 'src/member/service/member.service';
1313
import * as portfinder from 'portfinder';
14+
import { v4 as uuidv4 } from 'uuid';
1415

1516
export let app: INestApplication;
1617
export let githubApiService: GithubApiService;
@@ -178,7 +179,33 @@ export const listenAppAndSetPortEnv = async (app) => {
178179
process.env.PORT = port.toString();
179180
};
180181

182+
const createDatabase = async (dbName: string) => {
183+
const normalDataSource = getDataSource();
184+
await normalDataSource.initialize();
185+
await normalDataSource.query(`CREATE DATABASE \`${dbName}\`;`);
186+
await normalDataSource.destroy();
187+
};
188+
189+
const dropDatabase = async (dbName: string) => {
190+
const normalDataSource = getDataSource();
191+
await normalDataSource.initialize();
192+
await normalDataSource.query(`DROP DATABASE IF EXISTS \`${dbName}\`;`);
193+
await normalDataSource.destroy();
194+
};
195+
196+
const getDataSource = () => {
197+
return new DataSource({
198+
type: 'mysql',
199+
host: process.env.DATABASE_HOST,
200+
port: +process.env.DATABASE_PORT,
201+
username: process.env.DATABASE_USER,
202+
password: process.env.DATABASE_PASSWORD,
203+
});
204+
};
205+
181206
beforeAll(async () => {
207+
process.env.DATABASE_NAME = uuidv4();
208+
await createDatabase(process.env.DATABASE_NAME);
182209
await appInit();
183210
});
184211

@@ -195,4 +222,5 @@ beforeEach(async () => {
195222

196223
afterAll(async () => {
197224
await app.close();
225+
await dropDatabase(process.env.DATABASE_NAME);
198226
});

0 commit comments

Comments
 (0)