2022.08.03(Wed)
[TIL] Day69
[SEB FE] Day70
Test-Driven-Development- ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ
์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ํ ์คํธ๋ฅผ ์ฐ๋ SW ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก
๐ย ์์ ๋จ์์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ ๊ฒ
Write Failing Test: ์คํจํ๋ ํ
์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑMake Test Pass: ํ
์คํธ ์ฝ๋๋ฅผ ์ฑ๊ณต์ํค๊ธฐ ์ํ ์ค์ ์ฝ๋ ์์ฑRefactor: ์ค๋ณต ์ฝ๋ ์ ๊ฑฐ, ์ผ๋ฐํ ๋ฑ์ ๋ฆฌํฉํ ๋ง ์ํย โย 1 ๊ณผ์ ๋ง์น๊ธฐ ์ ์ 2 ์์
์์ํ์ง ์๋๋ก ์ฃผ์!
โย 2 ์งํ์, 1์ ํ
์คํธ ํต๊ณผํ ์ ๋์ ์ต์ ์ฝ๋๋ง ์์ฑํด์ผ ํจ!
๐คทโโ๏ธย TDD ์ ์ฌ์ฉ?? โ ์์ํ์ง ๋ชปํ๋ ๋ฒ๊ทธ๋ฅผ ์ค์ฌ ์์ ์๊ฐ์ ์ค์ผ ์ ์๊ธฐ ๋๋ฌธ!
Testing Library: React ํ๋ก์ ํธ ์์ฑ์ ์๋์ผ๋ก ์ด์ฉ ๊ฐ๋ฅJest: JavaScript์ Testing Framework / Test Runner๋ก,๐นย package.json์ dependencies ํ์ธ
@testing-library/jest-dom : Jest-dom ์ ๊ณตํ๋ custom matcher ์ฌ์ฉํ ์ ์๊ฒ ํด์ค@testing-library/react : ์ปดํฌ๋ํธ ์์๋ฅผ ์ฐพ๊ธฐ ์ํ query ํฌํจ@testing-library/user-event: click๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ด๋ฒคํธ์ ์ด์ฉโย ํ
์คํธ ์คํ์ ์ํด์ ํ์ผ๋ช
์ <file name>.test.js ๊ฐ์ ํ์์ผ๋ก ์์ฑ!
test('2 ๋ํ๊ธฐ 2๋ 4', () => {
expect(2 + 2).toBe(4);
});
// it์ ์ฌ์ฉํด๋ ๊ฒฐ๊ณผ ๊ฐ์!
it('2 ๋ํ๊ธฐ 2๋ 4', () => {
expect(2 + 2).toBe(4);
});
// describe()์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ it(), test()๋ฅผ ํฌํจ ๊ฐ๋ฅ
describe('Simple Tests', () => {
test('2 ๋ํ๊ธฐ 2๋ 4', () => {
expect(2 + 2).toBe(4);
});
it('2 ๋ํ๊ธฐ 2๋ 4', () => {
expect(2 + 2).toBe(4);
});
});
โย throw: ํ
์คํธ๊ฐ ํต๊ณผํ์ง ์์์ ๋ ๋ฉ์ธ์ง ์ ๋ฌ์ ์ํด ์ฌ์ฉ
โย expect(), should() ํจ์๋ ๊ธฐ๋ฅ์ด ๋งค์ฐ ์ ์ฌํ๋ฏ๋ก ๊ฐ์ด ์ฌ์ฉํ ์ผ์ด ๊ฑฐ์ ์์
๐ถย chai ๋ผ์ด๋ธ๋ฌ๋ฆฌ
helper ํจ์๋ค์ด ๋ด๊ธด ๋ผ์ด๋ธ๋ฌ๋ฆฌassert()๋ฅผ ์์ฒด์ ์ผ๋ก ์ ๊ณต