๐๊ฐ์ DOM์์ ์์ ์ฐพ๊ธฐ
โกscreen
- render์์ ์์ฑ๋ ์๋ฎฌ๋ ์ด์
๋ DOM์ ์์ธ์ค ๊ฐ๋ฅ
โกscreen query methods
command[All]By{QueryType}
- command
- get : ์์๊ฐ DOM ๋ด์ ์์ ๊ฒ expect
- query : ์์๊ฐ DOM ๋ด์ ์์ง ์์ ๊ฒ expect
- find : ์์๊ฐ ๋น๋๊ธฐ์ ์ผ๋ก ๋ํ๋ ๊ฒฝ์ฐ expect -> DOM์ ๋น๋๊ธฐ์ ์ธ ์
๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ค๋ฆด ๋ ์ ์ฉ
- [All]
- ํฌํจ : ํ๋ ์ด์์ ๋งค์น expect -> ์ ์ฒด ๋ฐฐ์ด ๋ฐ์
- ๋ฏธํฌํจ : ํ๋์ ๋งค์น๋ง expect
- {QueryType}
- ๋ฌด์์ผ๋ก ๊ฒ์ ํ๋์ง
- Role : ์ญํ , ์ ๊ทผ์ฑ ๋๋ฌธ์ ๊ฐ์ฅ ์ฐ์ ์
- AltText
- Text
- PlaceholderText
- LabelText
- DisplayValue
โกquery methods ์์ ์ฐพ์ ๋ ์ฐ์ ์์
- ์ ๊ทผ์ฑ ๊ณ ๋ คํด์ ์์ ์ฐพ๊ฑฐ๋ ๋ณด์กฐ ๊ธฐ์ (์คํฌ๋ฆฐ ๋ฆฌ๋)๋ก ์์ ์ฐพ๋๊ฑธ ๊ถ์ฅ(๊ณต์๋ฌธ์)
1์์) ๋ค ์ ๊ทผ ๊ฐ๋ฅ
- getByRole : ํ์ด์ง์์ ์์ ์ญํ ์ ์๋ณ(button, heading) (์ฐธ๊ณ ๋ฌธ์)
- getByLabelText : ํผ์ ๊ดํด ํด๋น ๋ ์ด๋ธ์ ๊ฐ์ง ํผ ์ฐพ์ ๋ ์ฌ์ฉ
- getByPlaceholderText : ์
๋ ฅ ์์์ ๊ดํด
- getByText : ๋ํํ์ด ์๋ ๋์คํ๋ ์ด ์์
- getByDisplayValue : ํน์ ๊ฐ์ด ํผ ์์ ์
๋ ฅ ํ๋์ ํ์๋๊ณ ์๋์ง ํ์ธํ ๋ ์ฌ์ฉ
2์์) ์๋งจํฑ ์ฟผ๋ฆฌ
- 1๋ฒ์์ ์ด๋ ๊ฒ๋ ์ฌ์ฉํ ์ ์์ ์ ์ฌ์ฉ
- getByAltText : ์ด๋ฏธ์ง ๊ด๋ จ ์์
- getByTitle : ํ์ดํ ๊ด๋ จ ์์
3์์) test id
- ์ฟผ๋ฆฌ์ ๋ํ ์ตํ ์๋จ์ผ๋ก ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ
- ์ฌ์ฉ์๊ฐ ๋ณผ ์๋ ์๊ณ ์คํฌ๋ฆฐ ๋ฆฌ๋๋ ์ก์ธ์ค ๋ถ๊ฐ๋ฅ
- getByTestId : ํด๋น test id๋ฅผ ๊ฐ์ง ์์
๐์ ์ ์ด๋ฒคํธ ์๋ฎฌ๋ ์ด์
- fireEvent
@testing-library/react
์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ผ๋ก, ์ด๋ฒคํธ๋ฅผ ๊ฐ์ ๋ก ๋ฐ์
- ์ผ๋ฐ์ ์ผ๋ก DOM ์์์ ๋ํ ์ด๋ฒคํธ๋ฅผ ๋ฐ์
- ํ
์คํธํ๋ ๋์ ์ฌ์ฉ์์ ์ค์ ์ํธ์์ฉ์ ๋ชจ๋ฐฉํ๋ ๊ฒ์ด ์๋๋ผ ์ด๋ฒคํธ๋ฅผ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์คํ
- userEvent
@testing-library/user-event
์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ผ๋ก, ์ฌ์ฉ์ ์ด๋ฒคํธ๋ฅผ ๋ ์์ ํ๊ณ ํ์ค์ ์ผ๋ก ์๋ฎฌ๋ ์ด์
- ์ค์ ์ฌ์ฉ์๊ฐ ์์์ ์ํธ์์ฉํ๋ ๊ฒ๊ณผ ์ ์ฌํ ์ด๋ฒคํธ๋ฅผ ์คํํ์ฌ ํ
์คํธ
- setup ๋ฉ์๋์์ ๋ฐํ๋ฐ๋ ๊ฐ์ผ๋ก user ๊ฐ์ฒด ์ ์
const user = userEvent.setup();
- ํญ์ Promise ๋ฐํํ๊ธฐ ๋๋ฌธ์ ํธ์ถ ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ํ์
await user.click(๋ฒํผ);
๐Assertion(๋จ์ธ)
- ์ฐพ์ ์์๋ก ์ ์ ์ด๋ฒคํธ ์๋ฎฌ๋ ์ด์
์ ์ํจ ํ
์ฝ๋๋ ์์คํ
์ ํน์ ๋ถ๋ถ์ด ๊ธฐ๋ํ ๋๋ก ๋์ํ๋์ง๋ฅผ ๊ฒ์ฆ
โกjest-dom ์ ๋จ์ธ
- ์ฐธ๊ณ ๊ณต์๋ฌธ์
- ๋ฒํผ : toBeEnabled(), toBeDisabled()
- ์ฒดํฌ๋ฐ์ค : toBeChecked()
- ๋ถ์ ์ ์์ด ์๋ ๊ฒฝ์ฐ ๋จ์ธ ์์ not ์ฌ์ฉ