...

before / after
ํ ์คํธ๋ฅผ ์์ฑํ๋ค๋ณด๋ฉด ๋ชจ๋ ํ ์คํธ ํจ์์์ ๊ณตํต์ ์ธ ๋ก์ง์ด ํ์ํ ๋๊ฐ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ ์คํธ mock ํจ์๋ ์ํ๊ฐ ์ ์ง๋๋ ์์ฑ์ด ์๊ธฐ ๋๋ฌธ์,
ํ ์คํธ์ ์ฐ์ธ ๋ฐ์ดํฐ๊ฐ ๊ทธ๋๋ก ๋จ์์๋ค. ๋ฐ๋ผ์ ๋ค์ ํ ์คํธ๋ฅผ ์งํํ ๋ ์ด์ ์ ์ฐ์๋ mock ํจ์๋ฅผ ๋ ์ด๋ค๊ณ ํ๋ฉด, ๊ธฐ์กด์ ๋ฐ์ดํฐ๋๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ ์ด์ํด ์ง ์ ์๋ค.
before / after ์ด๋ผ๋ ๋ง์, ํ ์คํธ ํ๊ธฐ ์ / ํ ํ์ ๋ฐ์ดํฐ ์ค์ ํน์ ์ ๋ฆฌ๋ฅผ ์ํด ์ฐ์ธ๋ค๋ ๊ฐ๋ ์์ ๋น๋กฏ๋ ๊ฒ์ด๋ค.
beforeAll() / afterAll()
beforeAll() , afterAll() ์ ๋งจ ์ฒ์๊ณผ ๋งจ ๋์ ๋ฑ ํ ๋ฒ์ฉ๋ง ํธ์ถ ํ๊ฒ ์ค์ ํ๋ค.
๋ํ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ํ์ํ ์ฐ๊ฒฐ(Connection) ๊ฐ์ฒด๋ฅผ ์๊ฐํด๋ณผ ์ ์๋ค.
ํ ์คํธ ํจ์ ๋ง๋ค ๋งค๋ฒ Connection์ ๋งบ๊ณ ๋๋ ๊ฒ ๋ณด๋ค๋ ๋งจ ์ฒ์์ ํ ๋ฒ Connection์ ๋งบ์ด ๋๊ณ , ํ ์คํธ์ ์ฌ๋ฌ ํจ์์ ๊ฑธ์ณ์ ์ฌ์ฉ ํ ํ ๋ง์ง๋ง์ Connection์ ์ข ๋ฃํ๋ ๊ฒ์ด ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
let connection;
// ํ
์คํธ ์คํํ๊ธฐ์ ์ ๋ฏธ๋ฆฌ ์ ์ญ ์ค์
beforeAll(() => {
conection = openConnection({ host: "...", port: "..." });
});
... ์ฌ๋ฌ๊ฐ์ test ์ฝ๋๋ค
... ์ฌ๋ฌ ํ
์คํธ ํจ์ ๋ด์์ connection ๊ฐ์ฒด๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค.
// ํ
์คํธ ์๋ฃํ ํด์ฒด
afterAll(() => {
conection.close();
});
beforeEach() / afterEach()
beforeAll() ์ด ์ ์ญ์ผ๋ก ์ด๊ธฐ์ ํ๋ฒ ํธ์ถ๋๋ ๊ฒ์ด๋ผ๋ฉด,
beforeEach() ๋ ์ฌ๋ฌ ํ
์คํธํจ์ ๋ค์ด ๊ฐ๊ฐ ์คํ๋ ๋๋ง๋ค ๋งค๋ฒ ๋ถ๋ฌ์์ฃผ๋(each) ๊ฐ๋
์ด๋ค.
// test() ํจ์๋ค์ด ๋์๊ฐ๋๋ง๋ค beforeEach()์์ ์ค์ ํ, ์ฌ๋ฌ ๊ฐ์ฒด๋ค์ pushํ data.users ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.
beforeEach(() => {
data.users.push(
{ id: 1, email: "user1@test.com" },
{ id: 2, email: "user2@test.com" },
{ id: 3, email: "user3@test.com" }
);
});
test("find all users", () => {
// ... ํ
์คํธํ๋ฉด์ data.users์ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ค.
});
test("destory a user", () => {
// ... ํ
์คํธํ๋ฉด์ data.users์ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ค.
});
test("modify a user", () => {
// ... ํ
์คํธํ๋ฉด์ data.users์ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ค.
});
๋ฌผ๋ก ๊ฐ test() ํจ์ ๋ง๋ค ๋ด์ data.user.push() ๋ฅผ ๋ฃ๊ณ ์ฌ์ฉํด๋ ๋๋ค.
ํ์ง๋ง ์ด๋ ๊ณง ํ๋ก๊ทธ๋๋ฐ์์ ํผํด์ผํ ์ค๋ณต์ด ์๊ธฐ๊ฒ ๋๋ค. ์ค๋ณต์ ํผํ๊ธฐ ์ํด ๋ชจ๋ํ๊ฐ ํ์ํ๊ฑฐ๊ณ beforeEach() ๊ฐ ๊ทธ ๊ฐ๋
์ด๋ค.
// beforeEach()๋ฅผ ์์ธ๊ฒฝ์ฐ ๊ฐ test() ํจ์๋ด์ ์ผ์ผํ data.users ๋ฐ์ดํฐ๋ฅผ ๊ตฌํํด์ผ ํ๋ค.
test("find all users", () => {
data.users.push(
{ id: 1, email: "user1@test.com" },
{ id: 2, email: "user2@test.com" },
{ id: 3, email: "user3@test.com" }
);
// ... ํ
์คํธํ๋ฉด์ data.users์ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ค.
});
test("destory a user", () => {
data.users.push(
{ id: 1, email: "user1@test.com" },
{ id: 2, email: "user2@test.com" },
{ id: 3, email: "user3@test.com" }
);
// ... ํ
์คํธํ๋ฉด์ data.users์ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ค.
});
test("modify a user", () => {
data.users.push(
{ id: 1, email: "user1@test.com" },
{ id: 2, email: "user2@test.com" },
{ id: 3, email: "user3@test.com" }
);
// ... ํ
์คํธํ๋ฉด์ data.users์ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ค.
});
Reference
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.