[NestJS] End-to-end 테스트Backend/NestJS2023. 7. 11. 15:47
Table of Contents
반응형
End-to-end 테스트
개별 모듈과 클래스에 중점을 두는 Unit 테스트와 달리 end-to-end(e2e) 테스트는 보다 종합적인 수준에서 클래스와 모듈의 상호 작용을 다룹니다.
애플리케이션이 성장함에 따라 각 API endpoint의 E2E 동작을 수동으로 테스트하기가 어려워집니다. 자동화된 E2E 테스트는 시스템의 전반적인 동작이 정확하고 프로젝트 요구 사항을 충족하는지 확인하는 데 도움이 됩니다.
Nest 를 사용하면 SuperTest 라이브러리를 사용하여 HTTP request 를 쉽게 시뮬레이션할 수 있습니다. SuperTest는 superagent를 기반으로 하는 HTTP 검증 라이브러리입니다.
request()
SuperTest 의 request(app.getHttpServer())
함수를 사용하여 HTTP 테스트를 시뮬레이션합니다.
// localhost:3000/ 으로 라우팅될 때 Hello World!가 출력되는지 확인
it('/ (GET)', () => {
return request(app.getHttpServer()).get('/').expect(200).expect('Hello World!');
});
이러한 HTTP request 가 실행 중인 Nest 앱으로 라우팅 되기를 원하므로 request()
함수에 Nest 의 기반이 되는 HTTP 리스너에 대한 참조를 전달합니다.
사용 예시
기본적인 CRUD (Create/Read/Update/Delete) 에 대한 테스트를 하기 위해 다음과 같이 작성할 수 있습니다.
describe('/users', () => {
it('GET', () => {
return request(app.getHttpServer()).get('/users').expect(200).expect([]);
});
it('POST', () => {
return request(app.getHttpServer())
.post('/users')
.send({
name: 'hgko',
age: 30,
hobbies: ['soccer'],
})
.expect(201);
});
it('PATCH', () => {
return request(app.getHttpServer())
.patch('/users/1')
.send({
age: 35,
})
.expect(200);
});
it('DELETE', () => {
return request(app.getHttpServer()).delete('/users/1').expect(200);
});
});
참고
반응형
'Backend > NestJS' 카테고리의 다른 글
[NestJS] Jest 사용 방법 (0) | 2023.07.04 |
---|---|
[NestJS] Mapped types의 Partial 사용 방법 (0) | 2023.06.29 |
[NestJS] ValidationPipe 사용 방법 (0) | 2023.06.23 |
[NestJS] Param decorators (0) | 2023.06.19 |
[NestJS] Controller, Provider, Module 이란? (0) | 2023.06.14 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!