π‘ React Testing Library 곡μλ¬Έμμ μκ° λΆλΆμ λ°μ·νμ¬ λ²μν κΈμ λλ€. https://testing-library.com/docs/react-testing-library/intro
React Testing Library
λ DOM Testing Library
λ₯Ό κΈ°λ°μΌλ‘ νκ³ μμΌλ©°, APIλ₯Ό μΆκ°νμ¬ React μ»΄ν¬λνΈμμ λμν©λλ€.
Create React App
μ ν΅ν΄ μμ±λ νλ‘μ νΈλReact Testing Library
λ₯Ό κΈ°λ³Έμ μΌλ‘ μ§μν©λλ€. λ§μ½ κ·Έλ μ§ μμ μν©μ΄λΌλ©΄ npm μ ν΅ν΄ λ€μκ³Ό κ°μ΄ μΆκ°ν μ μμ΅λλ€.
# npm
npm install --save-dev @testing-library/react
# yarn
yarn add --dev @testing-library/react
λ¬Έμ
React μ»΄ν¬λνΈμ λν μ μ§λ³΄μ κ°λ₯ν ν μ€νΈλ₯Ό μμ±νκ³ μ ν λ, μ΄ λͺ©νμ μΌνμΌλ‘ ν μ€νΈκ° μ»΄ν¬λνΈμ ꡬνμ λν μΈλΆ μ 보λ₯Ό ν¬ν¨νλ κ²μ νΌνκ³ ν μ€νΈκ° μλν μ λ’°λ₯Ό μ£Όλλ° μ§μ€νκΈΈ μν©λλ€. μ΄μ λν μΌλΆλ‘μ μ»΄ν¬λνΈ λ¦¬ν©ν λ§(κΈ°λ₯μ μ μΈν ꡬνμ λν λ³κ²½)μ΄ ν μ€νΈλ₯Ό κΉ¨λ¨λ¦¬κ³ νμ λλ¦¬κ² λ§λ€μ§ μλλ‘ κΈ΄ μκ° λμ μ μ§λ³΄μ κ°λ₯ν ν μ€νΈλ² μ΄μ€λ₯Ό μν©λλ€.
ν΄κ²°
React Testing Library
λ React μ»΄ν¬λνΈλ₯Ό ν
μ€νΈνλ λ§€μ° κ°λ²Όμ΄ μ루μ
μ
λλ€. λ λμ ν
μ€νΈ κ΄νμ μ₯λ €νλ λ°©μμΌλ‘ react-dom
κ³Ό react-dom/test-utils
μμ κ°λ²Όμ΄ μ νΈλ¦¬ν° κΈ°λ₯μ μ 곡ν©λλ€. μ£Όμ κ°μ΄λ μμΉμ λ€μκ³Ό κ°μ΅λλ€.
ν μ€νΈκ° μννΈμ¨μ΄ μ¬μ©λ°©μκ³Ό μ μ¬ν μλ‘, λ λ§μ μ λ’°λ₯Ό μ€ μ μμ΅λλ€.
λ°λΌμ λλλ React μ»΄ν¬λνΈ μΈμ€ν΄μ€λ₯Ό μ²λ¦¬νλ λμ ν
μ€νΈλ μ€μ DOM λ
Έλμμ μλν κ²μ
λλ€. μ΄ λΌμ΄λΈλ¬λ¦¬κ° μ 곡νλ μ νΈλ¦¬ν°λ€μ μ¬μ©μ νλκ³Ό λμΌν λ°©μμΌλ‘ DOMμ 쿼리νλ κ²μ κ°λ₯νκ² ν©λλ€. μ¬μ©μλ€μ΄ νλ κ²μ²λΌ λΌλ²¨ λ¬Έμμ΄μ ν΅ν΄ form μμλ₯Ό μ°Ύκ±°λ, λ¬Έμμ΄μ ν΅ν΄ λ§ν¬λ λ²νΌμ μ°Ύμ΅λλ€. λν ν
μ€νΈ 컨ν
μΈ μ λ μ΄λΈμ΄ μλ―Έκ° μκ±°λ μ€μ©μ μ΄μ§ μμ μμμ λν βescape hatchβλ‘μ data-testid
λ₯Ό ν΅ν΄ μμλ₯Ό μ°Ύλ κΆμ₯λ λ°©λ²μ μ 곡ν©λλ€.
μ΄ λΌμ΄λΈλ¬λ¦¬λ μ΄ν리μΌμ΄μ μ μ κ·Όμ±μ λμ΄κ³ μ¬μ©μκ° μνλ λ°©μμΌλ‘ ꡬμ±μμλ₯Ό μ¬μ©νλ λ°©μμ κ°κΉμ΄ ν μ€νΈλ₯Ό μνν μ μλλ‘ νμ¬ ν μ€νΈλ₯Ό ν΅ν΄ μ€μ μ¬μ©μκ° μ΄ν리μΌμ΄μ μ μ¬μ©ν λ μ΄ν리μΌμ΄μ μ΄ μλν κ²μ΄λΌλ νμ μ κ°μ§ μ μμ΅λλ€.
μ΄ λΌμ΄λΈλ¬λ¦¬λ Enzyme μ λ체ν©λλ€. Enzyme μ체λ₯Ό μ¬μ©νμ¬ μ΄λ¬ν μ§μΉ¨μ λ°λ₯Ό μλ μκ² μ§λ§, Enzyme μ΄ μ 곡νλ λͺ¨λ μΆκ° μ νΈλ¦¬ν°(ꡬν μΈλΆ μ¬ν ν μ€νΈλ₯Ό μ©μ΄νκ² νλ μ νΈλ¦¬ν°) λλ¬Έμ μ΄λ₯Ό μ μ©νλ κ²μ΄ λ μ΄λ ΅μ΅λλ€.
μ΄ λΌμ΄λΈλ¬λ¦¬μ ν΄λΉλμ§ μλ κ²
- ν μ€νΈ λ¬λ νΉμ νλ μμν¬κ° μλλλ€.
- ν μ€νΈ νλ μμν¬λ₯Ό νμ νμ§ μμ΅λλ€. (κΈ°λ³Έ μ€μ μΌλ‘ Jestλ₯Ό κΆμ₯νμ§λ§, λͺ¨λ λΌμ΄λΈλ¬λ¦¬μμ μλν©λλ€)
NOTE: μ΄ λΌμ΄λΈλ¬λ¦¬λ DOM Testing Library μμ λ§λ€μ΄μ‘μ΅λλ€.
νν 리μΌ
μ΄ λΌμ΄λΈλ¬λ¦¬ μκ°λ₯Ό λ΄κ³ μλ What is React Testing Library? λΉλμ€λ₯Ό 보면 μ’μ΅λλ€. λν λ€μμ νν 리μΌλ λμΉμ§ λ§μΈμ.