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()
๋ฅผ ์์ฒด์ ์ผ๋ก ์ ๊ณต