Notice
Recent Posts
Recent Comments
Link
오늘도 개발
jest로 unit test하기 본문
1. 테스트용 db 생성
db에서 새 db 생성한 후 .env.test파일 생성
<.env.test>
TYPEORM_CONNECTION = mysql
TYPEORM_HOST = 127.0.0.1
TYPEORM_USERNAME = root
TYPEORM_PASSWORD = password
TYPEORM_DATABASE = justagram2test
TYPEORM_PORT = 3306
TYPEORM_LOGGING = True
2. 라이브러리 설치
jest 설치
npm install jest
supertest 설치
npm install --save-dev supertest
3. jset로 테스트 실행시 .env 대신 .env.test를 쓰도록 설정
<package.json>
scripts에 추가
"scripts": {
"test": "DOTENV_CONFIG_PATH=.env.test jest --setupFiles=dotenv/config"
},
4. 유닛테스트 작성
<test/user.test.js>
const request = require("supertest");
const { createApp } = require("../app");
const { AppDataSource } = require("../src/models/data-source");
describe("Sign Up", () => {
let app;
// 테스트 전 공통적으로 할 일
beforeAll(async() => {
// 앱, 데이터베이스만 가져옴. 서버는 켤 필요 없음.
app = createApp();
await AppDataSource.initialize();
await AppDataSource.query(`
INSERT INTO users(email, password) VALUES("garfield@naver.com", "12312")
`)
})
// 테스트 후 공통적으로 할 일
afterAll(async() => {
// 테스트 데이터 삭제
await AppDataSource.query(`TRUNCATE users`);
// db 커넥션 끊기
await AppDataSource.destroy();
});
// 성공 경우 테스트
test("SUCCESS: created user", async() => {
await request(app)
.post("/users/signup")
.send({email: "snoopy@naver.com", password: "1212"})
.expect(201);
})
// 중복 이메일인 경우 테스트
test("FAILED: duplicated email", async() => {
await request(app)
.post("/users/signup")
.send({ email: "garfield@naver.com", password: "12312" })
.expect(400);
})
})
5. 테스트 실행
npm test

'웹 프로그래밍 > Javascript' 카테고리의 다른 글
| 비교 연산자 ==와 === (0) | 2023.12.05 |
|---|---|
| 자바스크립트의 this (0) | 2022.10.17 |
| Layered Pattern (0) | 2022.10.01 |
| Node.js에서 인증, 인가 진행하기(bcrypt, jwt) (0) | 2022.09.29 |
| Middleware (0) | 2022.09.28 |