ํ ์คํ ๊ฐ์
๋ค๋ฅธ JavaScript ์ฝ๋์ ๋น์ทํ ๋ฐฉ๋ฒ์ผ๋ก React ์ปดํฌ๋ํธ๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค.
React ์ปดํฌ๋ํธ๋ฅผ ํ ์คํธํ ์ ์๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ ํฌ๊ฒ๋ 2๊ฐ์ง ์นดํ ๊ณ ๋ฆฌ๋ก ๋๋์ด์ง๋๋ค.
- ์ปดํฌ๋ํธ ํธ๋ฆฌ ๋ ๋๋ง : ๊ฐ๋ตํ๋ ํ ์คํ ํ๊ฒฝ ๋ฐ ์ถ๋ ฅ๊ฐ์ด ํ์คํ ๊ฒฝ์ฐ.
- ์์ฑ๋ ์ฑ์์์ ํ ์คํธ : ํ์ค์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ(โ์๋ ํฌ ์๋โ ํ ์คํธ๋ผ๊ณ ์๋ ค์ ธ ์์ต๋๋ค.)
์ด ๋ฌธ์ ์น์ ์ ์์ฃผ ๊ธฐ๋ณธ ํ ์คํ ์ ๋ต์ ์ด์ ์ ๋ง์ถ๊ณ ์์ต๋๋ค. ํ ์๋ํฌ์๋ ํ ์คํธ๋ ์ค์ํ ์ํฌํ๋ก์ ํดํ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋งค์ฐ ์ ์ฉํ์ง๋ง ์ด๋ฌํ ํ ์คํธ๋ค์ ํน์ ํ React ์ปดํฌ๋ํธ์ ๊ด๋ จ๋์ด ์์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค์ ์ด ์ธ์ ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.
ํธ๋ ์ด๋์คํ
ํ ์คํ ๋๊ตฌ๋ฅผ ์ ํํ ๋ ๋ช ๊ฐ์ง ํธ๋ ์ด๋์คํ๋ฅผ ์๊ฐํ๋ ๊ฒ์ ์๋ฏธ ์๋ ์ผ์ ๋๋ค.
- ๋ฐ๋ณต์์ ์๋ vs ํ์ค์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ : ๋ช๋ช ๋๊ตฌ๋ค์ ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธฐ๊ณ ๊ฒฐ๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋๋ ๊ณผ์ ์์ ๋งค์ฐ ๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ์ ๊ณตํ์ง๋ง ๋ธ๋ผ์ฐ์ ๋์์ ์ ํํ ๊ตฌํํ์ง ์์ต๋๋ค. ๋ค๋ฅธ ๋๊ตฌ๋ค์ด ํ์ค์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ์ฌ์ฉ๋์ง๋ง ๋ฐ๋ณต ์์ ์๋๋ฅผ ์ ํ์ํค๊ณ ์ง์์ ํตํฉ ์๋ฒ ํ๊ฒฝ์์ ๋ ์ฐ์ฝํฉ๋๋ค.
- ์ผ๋ง๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ํตํด ์ค์ ํ ์คํธ ํ๊ฒฝ์ ๋์์ ํ ์คํธํ ๊ฒ์ธ๊ฐ? ์ปดํฌ๋ํธ ์์์๋ โ์ ๋โํ ์คํธ์ โํตํฉโํ ์คํธ์ ์ฐจ์ด๋ ๋ช ํํ์ง ์์ต๋๋ค. ํ๋์ ํผ์ ํ ์คํ ํ๋ค๊ณ ํ ๋ ํ ์คํธ๋ ๋ํ ๋ฒํผ์ ์์ ๋ถ๋ถ์์ ์ด๋ฃจ์ด์ง๋์? ๋๋ ๋ฒํผ ์ปดํฌ๋ํธ์ ์๋ง์ ํ ์คํธ๋ฅผ ํ ์ ์๋์? ๋ฆฌํฉํ ๋ง๋ ๋ฒํผ์ด ํผ ํ ์คํธ์ ์ค๋ฅ๋ฅผ ์ผ์ผํค๋์?
๊ฐ๊ฐ์ ํ๊ณผ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ต์ด ์ ์ฉ๋ ์ ์์ต๋๋ค.
์ถ์ฒ ๋๊ตฌ
Jest๋ JavaScript ํ
์คํธ ๋ฌ๋์
๋๋ค. DOM์ ์ ๊ทผํ๊ฒ ํ๋ jsdom
์ ํตํด์ jsdom์ ๋จ์ง ์ด๋ป๊ฒ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ํ๋์ง์ ๋ํ ๋๋ต์ ๊ฐ์์
๋๋ค. ํ์ง๋ง ์ด๋ ์ข
์ข
React ์ปดํฌ๋ํธ๋ฅผ ํ
์คํ
ํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค. Jest๋ mocking modules๊ณผ timers ๊ฐ์ ํ์ํํ ํน์ง๊ณผ ๊ฒฐํฉ๋์ด ํ๋ฅญํ ๋ฐ๋ณต์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋์ ๋ ๋ง์ ์ฝ๋ ์ ์ด๋ฅผ ๊ฐ์ง๋๋ค.
React Testing Library๋ ์คํ ๋ํ ์ผ์ ๊ฐ์ง์ง ์๋ React ์ปดํฌ๋ํธ๋ฅผ ํ ์คํธํ๊ฒ ํ๋ ๋๊ตฌ ๋ชจ์์ ๋๋ค. ์ด๋ฌํ ์ ๊ทผ์ ๋ฆฌํฉํ ๋ง์ ์์ํ๊ฒ ํ๋ฉฐ ์ ๊ทผ์ฑ์ ๋ํ ๊ฐ์ฅ ์ข์ ์ฐ์ต์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ง์ง ์๋ ์ปดํฌ๋ํธ์ ๋ํ ์์ ๋ ๋๋ง ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง ์๋๋ผ๋ Jest์ ๊ฐ์ ํ ์คํธ ๋ฌ๋๋ mocking์ ์ํด ์๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๋ ํ์ตํ๊ธฐ
๋ ๊ฐ์ ํ์ด์ง๋ก ๋๋์ด ์์ต๋๋ค.
- Recipes: React ์ปดํฌ๋ํธ์ ๋ํ ํ ์คํธ๋ฅผ ์์ฑํ ๋ ํํ ํจํด
- Environments: React ์ปดํฌ๋ํธ์ ๋ํ ํ ์คํ ํ๊ฒฝ์ ์ค์ ํ ๋ ๊ณ ๋ คํด์ผ ํ ๊ฒ