[TDD] jest를 이용한 통합 테스트

김지원·2021년 8월 27일

tdd

목록 보기
2/3
post-thumbnail

jest를 깔았으니 이제 테스트를 진행해보자

1. 통합 테스트

모듈을 통합하는 단계에서 수행하는 테스트!

🤔 하는 이유
1. 모듈들의 상호 작용이 잘 이루어지는지 검증이 필요하다.
2. 통합하는 과정에서 발생하는 오류들을 찾기 위해서
3. 웹 페이지로부터 API를 호출해서 올바르게 동작하는지를 알기 위함! (가장 중요⭐)

2. supertest

jest에서 통합 테스트를 하기 위해서는 supertest라는 놈을 설치해주어야한다.

supertest는 내부적으로 express 서버를 구동시켜 실제 요청을 보내 결과를 검증하는 시스템으로 구성되어있다.

3. 📋 통합 테스트 실행

example.test.js

const request = require("supertest");
const { server, app } = require("../../app");
const application = request(app);

//테스트용 데이터
const content = {
	name: "hi",
}

// 전체 부분
describe("API 테스트", () => {
  // 비동기로 결과를 반환하기 때문에 response를 await으로
    test("GET 조회 시 200 반환", async () => {
      //사용하는 method와 그 안에 api URL을 넣어준다.
    	const res = await application.get("/api/hi/1");
      // 상태코드로 잘 작동되는지 비교 & 확인
    	await expect(res.statusCode).toEqual(200);
  });
  
  test("POST 강의 생성 시 201 반환", async () => {
    //post, put, patch같은 경우 send로 데이터를 넣어준다.
    	const res = await application.post("/api/hi").send(content);
    	await expect(res.statusCode).toEqual(201);
  });
});

간단하게 이런 식으로 만들 수 있다.

실패경우

실패할 경우 이런식으로 뜨게 된다.

supertest같은 경우 실제로 API 과정을 모두 진행하기 때문에 연결되어 있는 데이터베이스에 실제로 저장되거나 삭제되기도 한다.

이 점을 주의해서 하도록 하자!

profile
backend-developer

0개의 댓글