테스트 코드를 작성할때 더미데이터만 저장된 데이터베이스를 사용하는데, post, delete, put 등의 요청을 실행하면 데이터가 변경된다. 따라서, 각 테스트 케이스를 실행하기 전에 데이터베이스를 초기화하고 더미데이터를 벌크 인서트 해주는 작업이 필요하다.
그때 사용할 수 있는 것이 before
, after
, beforeEach
, afterEach
훅이다.
describe("suite1", () => {
before(() => console.log("before1"));
beforeEach(() => console.log("beforeEach1"));
after(() => console.log("after"));
afterEach(() => console.log("afterEach"));
it("test1", () => console.log("test1"));
it("test2", () => console.log("test2"));
});
/*
suite
before
beforeEach
test1
✅test1
afterEach
beforeEach
test2
✅test2
afterEach
after
*/
모든 훅들은 동기 또는 비동기로 동작시킬 수 있다. 테스트를 진행하기 전에 데이터베이스에 더미 데이터를 저장시킬 수 있다.
describe("Set up Database", () => {
const users = [
{
userId: "test1",
password: "helloworld123!",
nickname: "test1_nickname",
},
{
userId: "test2",
password: "helloworld123!",
nickname: "test2_nickname",
},
{
userId: "test3",
password: "helloworld123!",
nickname: "test3_nickname",
},
];
beforeEach("Sync DB", (done) => {
models.sequelize.sync({ force: true })
.then(() => done()})
});
beforeEach("Bulk insert data", (done) => {
models.User.bulkCreate(users);
done();
});
describe("GET /users", () => {}); //생략
describe("GET /users/:id", () => {}); //생략
describe("DELETE /users/:id", () => {}); //생략
});
reference