React Testing Library μ¬μ©νκΈ° (from Scratch) - 1
ν μ€νΈμ½λλ μ μ€μνκ°μ?
ν μ€νΈμ½λλ μ½λλ₯Ό 리ν©ν λ§ ν λ, νΉμ 리ν©ν λ§μ νμ§ μμλ μ€μν μ‘΄μ¬μ λλ€. 리ν©ν λ§μ ν λμλ ν μ€νΈμ½λλ₯Ό μ§λκ³ λ¦¬ν©ν λ§μ νλ©΄ νκΈ° μ κ³Ό νμ κ²°κ³Όκ° λμΌνλ€λ κ²μ 보μ₯ν μ μμ΅λλ€. μΈμλ μλ‘μ΄ κΈ°λ₯μ΄ μΆκ°λκ±°λ κΈ°μ‘΄ κΈ°λ₯μ΄ λ³κ²½λμμ λ λ€λ₯Έ κΈ°λ₯λ€μ΄ μ λλ‘ λμνμ§ μμ μλ μκΈ° λλ¬Έμ ν μ€νΈμ½λλ₯Ό λ§λ€μ΄λλ©΄ μ μ§λ³΄μν λ μμμΉ λͺ» ν μλ¬λ€μ 미리 λ°©μ§ν μ κ° μμ΅λλ€. λ€μν κ°λ°μμ μμλ μ΄ μ€μμ±μ κ΅μ₯ν κ°μ‘°νκ³ μμ΅λλ€.
React Testing Libraryλ μΈλΆμ μΈ κ΅¬νμ¬ν보λ€λ μ€μ μ¬μ©μ κ²½νκ³Ό μ μ¬ν λ°©μμ ν μ€νΈλ₯Ό μμ±νκΈ°λ₯Ό κΆκ³ ν©λλ€. μλ₯Ό λ€μ΄μ div νκ·Έλ₯Ό μ¬μ©νλμ§ λ³΄λ€ div ν κ·Έμ λ©μΈμ§κ° λΈλΌμ°μ μ μ λ ΈμΆμ΄ λλμ§, buttonμ΄ μ λ¨λ μ§ λ±μ νμ νλ κ²μ λ μ€μνλ€κ³ μκ°ν©λλ€.
리μ‘νΈ ν μ€νΈμ½λλ₯Ό μ§κΈ° μν΄μ κ²μμ νλ€λ³΄λ©΄ jest λΌλ λ¨μ΄λ λ§μ΄ 보μκ² λ κ²μ λλ€. μμλ ν μ€νΈμ½λλ₯Ό μ§κΈ° μν λꡬμ λλ€. λ€λ₯Έ μ μ΄ μλ€λ©΄ React Testing Libraryκ° jestλ₯Ό ν¬ν¨νκ³ μλ€κ³ μκ°νλ©΄ μ’μ κ² κ°μ΅λλ€. jest λ μ체μ μΈ κΈ°λ₯ ν μ€νΈλ₯Ό ν μ μμ§λ§ React μ»΄ν¬λνΈλ₯Ό λ λλ§νλ ν μ€νΈλ₯Ό νκΈ° μν΄μλ λͺ κ°μ§ μΆκ°μ μΈ κΈ°λ₯λ€μ΄ νμν©λλ€.
리μ‘νΈ κΈ°λ³Έ νμ΄μ§λ‘ μμ보λ ν μ€νΈμ½λ
μ μΌ μ²μ 리μ‘νΈ νλ‘μ νΈλ₯Ό μμ±νλ©΄ React λ‘κ³ κ° λΉκΈλΉκΈ λλ νμ΄μ§κ° λΉλλ€.
κ·Έλ¦¬κ³ μμ±λ ν΄λμ νμΌμ μ°¬μ°¬ν 보μλ©΄ APpp.test.js λΌλ νμΌμ΄ μμ΅λλ€.
κ·Έ νμΌμ μ€νν΄λ³΄μλ©΄ λ€, μ¬λ¬λΆμ ν μ€νΈ μ½λκ° μ΄λ»κ² μκ²Όλμ§ λ³΄μκ² λ©λλ€.
App.test.js
import { render, screen } from "@testing-library/react";
import App from './App';
test('renders learn react link', () =>{
render(<App />);
const linkElement = screen.getByText(/learn react/i);
expect(linkElement).toBeInTheDocument();
}
λΉκΈλΉκΈ λκ³ μλ 리μ‘νΈ λ‘κ³ λ°μ μ리μ‘μ λ§ν¬μ λν ν μ€νΈμ λλ€.
App.js νμΌμ μλ a tagμ μ νμλ Learn React λΌλ ν μ€νΈλ₯Ό λ΄ λ¨μ΄λ‘ λ³κ²½νμκ³ ν μ€νΈλ₯Ό λλ €λ΄ μλ€
ν μ€νΈ μ½λλ₯Ό λ리기 μν΄μλ ν°λ―Έλμ μ€ννμκ³ μ
npm test or yarn test λ₯Ό μ μ΄μ£Όμλ©΄ λ©λλ€. κ·Έλ¬λ©΄ μ¬λ¬ μ΅μ μ΄ λ¨λλ°μ, aλ₯Ό νμ΄ννμλ©΄ μ 체 μ½λλ₯Ό νμΈν©λλ€.
κ·Έλ¬λ©΄ failed λΌκ³ λ° κ²λλ€.
About Queries
ν μ€νΈμ½λλ₯Ό μ§κΈ° μν λ€μν μ½λκ° μ λ§ λ§μ΅λλ€. Testing Libarary 쿼리보λ¬κ°κΈ°(https://testing-library.com/docs/queries/about)
νμμ μΌλ‘ test, render λ±μ΄ μ°μ΄λλ°μ, testλ method, renderμ ν μ€νΈν΄μΌν νΉμ μ»΄ν¬λνΈλ₯Ό λ λλ§νλλ° μ°μ λλ€. screenμ 쿼리λ₯Ό μ¬μ©ν΄μ νΉμ DOMμ κ°μ Έμ€κΈ° μνκ²μ΄λΌκ³ μ΄ν΄νλ©΄ μ’μ κ² κ°μμ. containerλ‘ μ°μ΄κΈ°λ ν©λλ€. screen λ€μ λΆλ getByText κ°μ κ²μ΄ 쿼리μ λλ€.
νμ΅μλ£
βΎ https://tecoble.techcourse.co.kr/post/2021-10-22-react-testing-library/
βΎ https://testing-library.com/docs/queries/about