우선 나는 Jest 사용하여 테스트 하였다.
왜 Jest 를 사용했니 ? Why ??
1. Jest 란?
Jest 란 코드가 제대로 동작하는지 확인하는 Test Case 를 만드는 페이스북 이 개발한 'JS 테스팅 프레임워크' 이다.
왜 Jest 를 사용했어 ?
Mocha 라는 라이브러리는 Jest 보다 사용할 수 있는 기능이 많지만 Jest 는 문서화도 잘되어 있고 별도의 설치 없이 간단하고 가볍게 사용할 수 있어 사용하게 되었다.
npm i -D jest
"scripts": {
"test": "jest"
}
2. 테스트코드 작성
const request = require("supertest");
const server = require("../../app");
require("dotenv").config();
const mockMember = {
memberEmail: "dpekfa144@naver.com",
password: "min871612!",
};
const memberTest = {
customMemberId: "dpekfa144@naver.com",
};
const customQuestions = {
category: "costom",
question: "커스텀 테스트 입니다.",
};
describe("mockInterview 테스트", () => {
it("Post /mockInterview/custom", async () => {
const accessToken = jwt.sign(mockMember);
const refreshToken = jwt.refreshSign(mockMember);
const response = await request(server)
.post("/mockInterview/custom")
.set("Authorization", `Bearer ${accessToken}`)
.set("refresh", `Bearer ${refreshToken}`)
.send(customQuestions);
expect(response.statusCode).toBe(201);
});
});
자, 이렇게 테스트 Run 을 돌리게 되면 우찌되는지 한번 봐보자
it("Delete /mockInterview/custom", async () => {
const accessToken = jwt.sign(member);
const data = await MockInterviews.findOne(memberTest);
const response = await request(server)
.delete("/mockInterview/custom/:paramsId")
.set("Authorization", `Bearer ${accessToken}`);
expect(response.statusCode).toBe(200);
});
하지만 결국 찾아냈다.
한참을 삽질하고 해매다가...
.delete(`/mockInterview/custom/${data.id}`)
ㅋㅋㅋㅋ 무슨 차이인지 보이시나염?
"" 빼고 백틱을 넣고 params 값에 실제로 받은 데이터의 경로를 넣어주면 됩니다... 후후후.... 자 이렇게 하고 테스트를 돌리면 ?!!
그렇다면 마지막으로 내가 짠 코드들로 통합 테스트를 해보자 !
이렇게 되면 정상적으로 내가 원하는 방향대로 테스트가 되었다 말할 수 있습니다 ^_^ 후 ... 재미있었다...