728x90
반응형
우리가 테스트를 진행하는 동안에 테스트를 마치고 다른 테스트를 진행할 때 항상 만들어 두었던 데이터베이스가
사라졌었다.( 새로운 테스트 진행마다 앱이 새로 생성됨 ) 이 과정이 귀찮으면 beforeAll Hook을 추가할 수 있다.
beforeEach(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [AppModule],
}).compile();
이 부분의 beforeEach를 beforeAll로 바꿔준다. 그다음 GET 메서드에서 id로 getOne함수를 사용하는 부분을 추가하자.
import { Test, TestingModule } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import * as request from 'supertest';
import { AppModule } from './../src/app.module';
describe('AppController (e2e)', () => {
let app: INestApplication;
beforeAll(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = moduleFixture.createNestApplication();
await app.init();
});
it('/ (GET)', () => {
return request(app.getHttpServer())
.get('/')
.expect(200)
.expect('this is home');
});
describe('/movies', () => {
it('GET',() => {
return request(app.getHttpServer())
.get('/movies')
.expect(200)
.expect([]);
});
it('POST',() => {
return request(app.getHttpServer())
.post('/movies')
.send({
title: 'Test Movie',
genres: ['test'],
year: 2000
})
.expect(201)
});
it('DELETE', () => {
return request(app.getHttpServer())
.delete('/movies')
.expect(404)
});
});
describe('/movies/:id',() => {
it('GET 200', () => {
return request(app.getHttpServer())
.get('/movies/1')
.expect(200)
})
})
});
/movies/:id에 200 status를 받게끔 코딩하고 테스트를 진행해보면
이렇게 에러가 뜨는 것을 확인할 수 있다. 왜 그럴까?
실제 서버에서 돌아갈 때는 id가 number라고 뜬다(main.ts에서 transform을 써서 number로 받아옴)
하지만 테스팅 서버에서는
어떤 pipe에도 올리지 않았다.
main.ts에서 적용했던 것처럼 테스팅서버에서도 적용하고 실행해보자.
아주 잘 작동하는것을 확인할 수 있다.
728x90
반응형
'Back-End > Nest.js' 카테고리의 다른 글
Nest.js | MongoDB | Schema (0) | 2021.10.06 |
---|---|
Nest.js | E2E TESTING | PATCH and DELETE (0) | 2021.09.30 |
Nest.js | E2E TESTING | Movies 테스트 (0) | 2021.09.30 |
Nest.js | UNIT TESTING | Delete and Create (0) | 2021.09.30 |
Nest.js | UNIT TESTING | getAll and getOne (0) | 2021.09.30 |