4.Testing Library
Jest
ํ์ด์ค๋ถ์์ ๋ง๋ ํ ์คํ ๋๊ตฌ์ด๋ค.
ํ ์คํ ํ๋ ์์ํฌ์ ์ต์ด ์ฌ์ฉ์๋ค์๊ฒ ๋ง์ ์ค์ ์ ์๊ตฌํ์ง๋ ์๋๋ค.(zero config)
Describe-Context-It ํจํด
Describe
ํ ์คํธ ์ค์ธ ๊ธฐ๋ฅ ๋๋ ๊ธฐ๋ฅ์ ์ ๋ฐ์ ์ธ ๋์์ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ฅ์ ๋ํ ๊ฐ๋ตํ ์ค๋ช ์ด ํฌํจ๋๋ฉฐ ํ ์คํธ์ ํ์ํ ์ ์ ์กฐ๊ฑด์ด๋ ๊ฐ์ ๋ ํฌํจ๋ ์ ์๋ค.
Context
๊ธฐ๋ฅ์ด ํ ์คํธ๋๋ ํน์ ์ปจํ ์คํธ ๋๋ ์๋๋ฆฌ์ค๋ฅผ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ฅ์ ํ ์คํธํ๊ธฐ ์ํด ์ค์ ํด์ผ ํ๋ ํน์ ์ ๋ ฅ, ๋งค๊ฐ ๋ณ์ ๋๋ ์ํ๊ฐ ํฌํจ๋๋ค.
It
์ํ ์ค์ธ ํน์ ํ ์คํธ ์ฌ๋ก ๋๋ ์ฃผ์ฅ์ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ ์คํธ ์ค์ธ ๊ธฐ๋ฅ์ด๋ ๊ธฐ๋ฅ์ ์์ ์ถ๋ ฅ์ด๋ ๋์์ด ํฌํจ๋๋ค.
์ฅ์
ํ ์คํธ ์ฝ๋๋ฅผ ๊ณ์ธต ๊ตฌ์กฐ๋ก ๋ง๋ค์ด ์ค๋ค.
"๋น ๋จ๋ฆฐ" ํ ์คํธ ์ฝ๋๋ฅผ ์ฐพ๊ธฐ ์ฝ๋ค.
Describe-Context-It
ํจํด์ ์ฌ์ฉํ๋ฉด ํ
์คํธ ๋ชจ์์ ๋ ์ฝ๊ฒ ์ฝ๊ณ ์ดํดํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ํน์ ๋ฌธ์ ๋ฅผ ๋ ์ฝ๊ฒ ๊ฒฉ๋ฆฌํ๊ณ ๋๋ฒ๊ทธํ ์ ์๋ค. ๋ํ ํ
์คํธ ๋ชจ์์ด ํฌ๊ด์ ์ด๊ณ ๋ชจ๋ ๊ด๋ จ ์๋๋ฆฌ์ค ๋ฐ ๋์์ ํฌํจํ๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ค.
React Testing Library
React Testing Library
๋ ์ฌ์ฉ์๊ฐ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์๋ฎฌ๋ ์ด์
ํ๋ ๋ฐฉ์์ผ๋ก React ๊ตฌ์ฑ ์์๋ฅผ ํ
์คํธํ๋ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ํ
์คํธ ์ ํธ๋ฆฌํฐ์ด๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์ํธ ์์ฉํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ ๋ฐฉ์์ผ๋ก DOM์ ์ฟผ๋ฆฌํ๊ณ ์กฐ์ํ๊ธฐ ์ํ ์ ํธ๋ฆฌํฐ ์ธํธ๋ฅผ ์ ๊ณตํ๋ DOM ํ
์คํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ ๊ตฌ์ถ๋๋ค.
React Testing Library
๋ ๊ฐ๋ฐ์๊ฐ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ด ์๋ ๊ตฌ์ฑ ์์์ ๋์์ ์ด์ ์ ๋ง์ถ ํ
์คํธ๋ฅผ ์์ฑํ๋๋ก ๊ถ์ฅํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค. ์ฆ, ํน์ ์์๋ ์คํ์ผ์ ์กด์ฌ์ ๊ฐ์ ํน์ ๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ฅผ ํ
์คํธํ๋ ๋์ ๊ตฌ์ฑ ์์๊ฐ ์ฌ์ฉ์ ์ํธ ์์ฉ ๋ฐ ํด๋น ์ํ ๋ณ๊ฒฝ์ ๋ํ ์๋ต์ผ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ํ
์คํธ๋ฅผ ์์ฑํด์ผ ํ๋ค.
React Testing Library
๋ DOM
์ ์ฟผ๋ฆฌํ๊ณ render
, fireEvent
๋ฐ waitFor
์ ๊ฐ์ ๊ตฌ์ฑ ์์์ ์ํธ ์์ฉํ๊ธฐ ์ํ ์ผ๋ จ์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ ๊ณตํ๋ค. ์ด๋ฌํ ์ ํธ๋ฆฌํฐ๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋จ์ถ ํด๋ฆญ ๋๋ ์์์ ํ
์คํธ ์
๋ ฅ๊ณผ ๊ฐ์ ๊ตฌ์ฑ ์์์์ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ์๋ฎฌ๋ ์ด์
ํ๊ณ ์ด๋ฌํ ์ํธ ์์ฉ์ ๋ํ ์๋ต์ผ๋ก ๊ตฌ์ฑ ์์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ ์ ์๋ค.
React Testing Library
๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ React ๊ตฌ์ฑ ์์์ ๋ํด ๋ณด๋ค ์์ ์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ํ
์คํธ๋ฅผ ์์ฑํ๋ ๋์์ ๋ณด๋ค ์ฌ์ฉ์ ์ค์ฌ์ ์ธ ํ
์คํธ ์ ๊ทผ ๋ฐฉ์์ ์ด์งํ ์ ์๋ค. ๊ตฌํ ์ธ๋ถ ์ฌํญ์ด ์๋ ๊ตฌ์ฑ ์์์ ๋์์ ์ด์ ์ ๋ง์ถค์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๊ตฌ์ฑ ์์์ ๋ด๋ถ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ ๋ ํ๋ ฅ์ ์ด๊ณ ์ต์ข
์ฌ์ฉ์์ ์๊ตฌ์ ๊ธฐ๋์ ๋ ์ ๋ถํฉํ๋ ํ
์คํธ๋ฅผ ์์ฑํ ์ ์๋ค.
The more your tests resemble the way your software is used, the more confidence they can give you. - RTL ๊ณต์๋ฌธ์ ํ ์คํธ๊ฐ ์ํํธ์จ์ด ์ฌ์ฉ ๋ฐฉ์๊ณผ ์ ์ฌํ ์๋ก ๋ ๋ง์ ์ ๋ขฐ๋ฅผ ์ป์ ์ ์๋ค.
React Testing Library๋ UI์ ํนํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
RTL์ ์ด๋ฆ ๊ทธ๋๋ก React ์ปดํฌ๋ํธ๋ฅผ ํ ์คํธ ํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๋๊ตฌ์ด๊ธฐ ๋๋ฌธ์, ๊ธฐ๋ณธ์ ์ผ๋ก CRA์ ๋ด์ฅ๋์ด ์๋ค. ๋ง์ฝ CRA๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ง์ ์ค์ ํ๋ค๋ฉด
npm install --save-dev @testing-library/react
๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ์ค์นํ๋ฉด ๋๋ค.
์ฟผ๋ฆฌ ํ์
get - ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ ํ๊ฒ์ ์ฐพ์ง ๋ชปํ ์ ์๋ฌ๋ฅผ ๋์ง๋๋ค.
find - ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ ํ๊ฒ์ ์ฐพ์ง ๋ชปํ ์ ์๋ฌ๋ฅผ ๋์ง๋๋ค.
query - ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ ํ๊ฒ์ ์ฐพ์ง ๋ชปํ ์ null์ ๋ฐํํ๋ค.
Action, Assertion, ๋น๋๊ธฐ ํ ์คํธ ๋ฑ๋ฑ ์ด ๋ถ๋ถ๋ ์์ผ๋ก ๊ฐ์๊ฐ ์งํ๋๋ฉด์ ๋ฌด๋ถ๋ณํ ํ ์คํธ๋ฅผ ์์ฑํ๊ธฐ ๋ณด๋ค ์ ๋ง ํ์ํ ๋ถ๋ถ์ ํ ์คํธ๊ฐ ๋ค์ด๊ฐ๋๋ก ๊ณ ๋ฏผํ๋ฉด์ ์งํํด ๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
Aha Moment
Chat GPT๋ฅผ ์ด์ฉํด์ 1์ฃผ์ฐจ ๋น์ฝํ๋ ๋ถ๋ถ์ ์ถ๊ฐ๋ก ์ ๋ฆฌํด ์ฃผ์๋๋ฐ React Testing Library๋ฅผ ์ ๋ฆฌํ๊ณ ๋๋๊น Test ๊ฐ์๊ฐ ๋ ๊ธฐ๋๋๊ธฐ ์์ํ๋ค. ์ฌ์ค ํ์ฌ ์ด์ํ๊ณ ์๋ ์๋น์ค์๋ test ์ฝ๋๊ฐ ์์ฑ๋์ด ์์ง ์์์ ์ฝ๋ ์์ ์ฑ์ด ์ข๋ค๊ณ ํ ์ ์๊ณ ์ด์ ์ ์์ ๋ก๊ทธ์ธ ๊ด๋ จํด์ ์ถ๊ฐ์ ์ธ ์์ ์์ ์ ํตํด์ ์์ ๋ก ์ด๋ฏธ ๊ฐ์ ๋์ด์๋ ์ฌ์ฉ์์ ๋ก๊ทธ์ธ์ ์ ์์ ์ผ๋ก ์งํ์ด ๋์์ง๋ง ํ์๊ฐ์ ์ด ์งํ์ด ์ ์์ ์ผ๋ก ๋์ํ์ง ์์๋ ์ํฉ์ด ์์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๋ถ๋ถ์ ๋ํด์ ๋ฐฉ์ง ํ๊ธฐ ์ํด์๋ ํ ์คํธ ์ฝ๋๊ฐ ํ์ํ๋ค๊ณ ์๊ฐ์ ๋ค์์ง๋ง ์ ์ฉ๊น์ง๋ ์ฝ์ง ์์ ์ํฉ์ด์ด์ ์ดํ์ ์์ ํ ์คํธ ๊ฐ์๋ฅผ ํตํด์ ์ด๋์ ๋ ์ต์ํด์ง๋ฉด ์์ ๋ถ๋ถ๋ถํฐ ์ ์ฉํด ๋ณด๋๋ก ํด์ผ๊ฒ ๋ค.
Last updated