Node.js
[NestJS] e2e테스트 Jest 테스트 시 DB 초기화하는 법
임채성
2022. 10. 7. 16:00
e2e 테스트는 매번 데이터베이스를 초기화해줄 필요가 있습니다.
다만.. 저는 Jest를 쓰는데 따로 초기화 해주는 함수가 없었습니다.
(있으면 알려주세요!)
그런 이유로 방법 계속 찾아봤는데 따로 메소드를 제공해주지 않아서 팁 정도를 찾아서 이를 공유하고자 합니다.
import { Test, TestingModule } from '@nestjs/testing';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Connection } from 'typeorm';
import ormConfig from './orm-config';
import { AppController } from '@app/app.controller';
import { UserModule } from '@app/user/user.module';
import { User } from '@domain/user/user.entity';
describe('App Module Integration', () => {
let app;
beforeAll(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [
TypeOrmModule.forFeature([User]),
TypeOrmModule.forRoot(ormConfig),
UserModule,
],
controllers: [AppController],
}).compile();
app = moduleFixture.createNestApplication();
const connection = app.get(Connection);
await connection.synchronize(true);
await app.init();
});
afterEach(async () => {
const connection = app.get(Connection);
await connection.synchronize(true);
});
it('e2e 테스트 작동 확인', () => {
return request(app.getHttpServer())
.get('/hello?name=world')
.expect(200)
.expect('Hello world!');
});
});
e2e테스트 구조는 https://github.com/mutoe/nestjs-realworld-example-app/tree/master/test 참고했습니다.
afterEach(async () => {
const connection = app.get(Connection);
await connection.synchronize(true);
});
https://github.com/nestjs/nest/issues/409#issuecomment-390569628
강제로 데이터베이스를 동기화때려서 초기화했습니다..