Supertest 사용법 (1) - 개요,설치,사용방법

modolee·2020년 10월 5일
3
post-thumbnail

개요

  • HTTP assertion을 쉽게 만들어주는 라이브러리
  • 클라이언트 사이드 HTTP request 라이브러리 인 superagent를 기반으로 만들어짐

설치

  • yarn 이용 설치
yarn add --dev supertest
  • npm 이용 설치
npm install --save-dev supertest

사용 방법

서버 코드

// app.js
import express from 'express';
const app = express();

// 상세한 구현...

export default app;

테스트 코드

기본 코드

import request from 'supertest';
import app from './app';

request(app) // 체이닝을 통해서 추가적으로 설정이 필요

Method 및 Path 지정

  • GET, POST, PUT, DELETE 등의 Method 지정
  • Method와 함께 API Path를 문자열로 지정
request(app)
  .get('/user');
  // .get('/user/list')
  // .post('/user')
  // .put('/user/36')
  // .delete('/user/36')

Header field 지정

  • Accept, Content-Type, Content-Length 등의 헤더 필드에 값을 지정
request(app)
  .get('/user')
  .set('Accept', 'application/json')
  .type('application/json'); // Content-Type은 축약해서 사용 가능
  // 아래 코드와 동일하게 동작
  // .set('Content-Type', 'application/json')

데이터 첨부

  • Query string
request(app)
  .get('/user')
  .query({ name: 'modolee' })
  // .query('name=modolee')
  • Body
request(app)
  .post('/user')
  .type('application/json')
  .send({ name: 'modolee' });
  • Multipart files
request(app)
  .post('/upload')
  .attach('image1', 'path/to/image.png');

Response assertion

  • Status code
request(app)
  .get('/user')
  .expect(200);
  // .expect(404)
  // .expect(204)
  • Status code & Body
request(app)
  .get('/user')
	.expect(200, { name: 'modolee' });
  // .expect(200, 'some string');
  • Body
request(app)
  .get('/user')
	.expect({ name: 'modolee' });
  // .expect('some string');
  • Header field
request(app)
  .get('/user')
	.expect('Content-Type', /json/);
profile
기초가 탄탄한 백엔드 개발자를 꿈꿉니다.

0개의 댓글