ํ ์คํธ์ฝ๋๋ ์ ์ค์ํ๊ฐ์?
ํ ์คํธ์ฝ๋๋ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋ง ํ ๋, ํน์ ๋ฆฌํฉํ ๋ง์ ํ์ง ์์๋ ์ค์ํ ์กด์ฌ์ ๋๋ค. ๋ฆฌํฉํ ๋ง์ ํ ๋์๋ ํ ์คํธ์ฝ๋๋ฅผ ์ง๋๊ณ ๋ฆฌํฉํ ๋ง์ ํ๋ฉด ํ๊ธฐ ์ ๊ณผ ํ์ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ๋ค๋ ๊ฒ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ธ์๋ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๊ฑฐ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ด ๋ณ๊ฒฝ๋์์ ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ๋ค์ด ์ ๋๋ก ๋์ํ์ง ์์ ์๋ ์๊ธฐ ๋๋ฌธ์ ํ ์คํธ์ฝ๋๋ฅผ ๋ง๋ค์ด๋๋ฉด ์ ์ง๋ณด์ํ ๋ ์์์น ๋ชป ํ ์๋ฌ๋ค์ ๋ฏธ๋ฆฌ ๋ฐฉ์งํ ์ ๊ฐ ์์ต๋๋ค. ๋ค์ํ ๊ฐ๋ฐ์์ ์์๋ ์ด ์ค์์ฑ์ ๊ต์ฅํ ๊ฐ์กฐํ๊ณ ์์ต๋๋ค.
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
'๊ฐ๋ฐ > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฆฌ์กํธ] React image file Resize ํ๊ธฐ / react-image-file-resizer (0) | 2022.11.28 |
---|---|
[๋ฆฌ์กํธ] useRef ์ฌ์ฉํ๊ธฐ - ๋ฆฌ์กํธ์์ ํน์ DOM์ ์ ๊ทผํ๊ธฐ (0) | 2022.11.15 |
[React] ๋ค๊ตญ์ด ์ฒ๋ฆฌํ๊ธฐ - i18n ์ฌ์ฉํ๊ธฐ (0) | 2022.04.02 |
[React] React-Query ๋? (0) | 2022.03.28 |
[React] React Custom Hooks (0) | 2022.03.23 |