-
Notifications
You must be signed in to change notification settings - Fork 2
[React] Jest
Kim Hyewon edited this page Jun 20, 2022
·
2 revisions
- ํ ์คํธ๋ฅผ ๋จผ์ ๋ง๋ค๊ณ ํ ์คํธ๋ฅผ ํต๊ณผํ๊ธฐ ์ํ ๊ฒ์ ์ง๋ ๊ฒ
- ๋ง๋๋ ๊ณผ์ ์์ ์ฐ์ ํ ์คํธ๋ฅผ ์์ฑํ๊ณ ๊ทธ๊ฑธ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ๋ง๋ค๊ณ ๋ฅผ ๋ฐ๋ณตํ๋ฉด์ ์ ๋๋ก ๋์ํ๋์ง์ ๋ํ ํผ๋๋ฐฑ์ ์ ๊ทน์ ์ผ๋ก ๋ฐ๋ ๊ฒ.
- ์กด์ฌํ์ง๋ ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ๋ง๋ ๋ค.
- ์ปดํ์ผ๋ง ๋๋๋ก ๋ฉ์๋์ ๊ป์ง๋ง ๋ง๋ค์ด์ ์คํ์ํจ๋ค.
- jUnit์ ๋นจ๊ฐ ๋ง๋๊ฐ ๋ํ๋๋ค.
- ๋ฉ์๋๋ฅผ ์ต์ํ์ ์ฝ๋๋ก ์์ฑ, ์ค๋ก์ง ๋ น์ ๋ง๋๋ฅผ ๋ณด๊ฒ ๋ค๋ ์ผ๋ ์ผ๋ก ์ต๋ํ ๋น ๋ฅด๊ฒ ๊ตฌํํ๋ค.
- ๋นจ๊ฐ ๋ง๋ ๋์ ๋ง์์ด ํธ์ํด์ง๋ ๋ น์ ๋ง๋๊ฐ ๋ํ๋๋ค.
- ์ต์ ์ ๋คํด ๋ฆฌํฉํ ๋งํ๋ค.
๊ณต์ ๋ฆฌ์กํธ ๋ฌธ์์์ ๊ถ์ฅํ๋ ํ ์คํธ ํ๋ ์์ํฌ JSDOM์ ํตํด DOM์ ์ ๊ทผํ ์ ์๋ JS ํ ์คํธ ๋ฌ๋
- cra๋ก ์ด๊ธฐํ๋ ํ๋ก์ ํธ์ jest ํจํค์ง๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ค์น๋จ
- testํ๋ ค๋ js ํ์ผ๊ณผ test ํจ์๊ฐ ์๋ test.js ํ์
test('simple test', ()=>{
expect();
});
- ์ธ์๋ก test ๋ช , ํ ์คํธ ๋์ ํจ์, ํ์์์ ์ง์
- ํ ์คํธ๋ฅผ ์์ฑํ ๋ ๊ฐ์ด ํน์ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋์ง ํ์ธํ๋ ์ฉ๋
- expect ํจ์๊ฐ ๋ฐํํ๋ matcher๋ฅผ ํตํด ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํจ
- toBe
- ๊ธฐ๋ณธ ๊ฐ์ ๋น๊ตํ๊ฑฐ๋ ๊ฐ์ฒด ์ธ์คํด์ค์ ์ฐธ์กฐ ID๋ฅผ ํ์ธํ๋ ๋ฐ ์ฌ์ฉ.
- toEqaul
- ์ฐธ์กฐ ์์น ๊ณ ๋ ค ์ํจ, ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ํ ์คํธํ ๋ ์ฌ์ฉ.
React Testing Library๋ ๋งค์ฐ ์ฌํํ์ง๋ง ๊ฐ๋ ฅํ API๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํฌ๊ฒ DOM์ ์ปดํฌ๋ํธ๋ฅผ ๋๋๋ง ํด์ฃผ๋ render() ํจ์์, ํน์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์์ผ์ฃผ๋ fireEvent ๊ฐ์ฒด, ๊ทธ๋ฆฌ๊ณ DOM์์ ํน์ ์์ญ์ ์ ํํ๊ธฐ ์ํ ๋ค์ํ ์ฟผ๋ฆฌ ํจ์๋ค์ด ์กด์ฌํฉ๋๋ค.
- render() ํจ์๋ @testing-library/react ๋ชจ๋๋ก ๋ถํฐ ๋ฐ๋ก ์ํฌํธ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ์ธ์๋ก ๋๋๋งํ React ์ปดํฌ๋ํธ๋ฅผ ๋ฐ์.
- React Testing Library ์ ๊ณตํ๋ ๋ชจ๋ ์ฟผ๋ฆฌ ํจ์์ ๊ธฐํ ์ ํธ๋ฆฌํฐ ํจ์ ๋ด๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฆฌํด
- fireEvent ๊ฐ์ฒด๋ ์ฟผ๋ฆฌ ํจ์๋ก ์ ํ๋ ์์ญ์ ๋์์ผ๋ก ํน์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ธฐ ์ํ ์ด๋ฒคํธ ํจ์ return
https://gmlwjd9405.github.io/2018/06/03/agile-tdd.html
https://goforit.tistory.com/135