티스토리 뷰

screen 객체
screen은 React Testing Library(RTL)의 주요 객체 중 하나입니다. 테스트 대상이 되는 컴포넌트를 가리키는 역할을 합니다. screen 객체는 DOM 요소에 접근하고, 요소를 검색하고, 상태를 확인하는 데 사용됩니다.
screen 객체의 주요 메서드 중 하나가 "query" 메서드인데요! screen.query 메서드는 주어진 선택자를 사용하여 DOM에서 요소를 찾습니다.
→ 요소가 존재하지 않으면 null
→ 요소를 찾으면 해당 요소 return
이를 통해 테스트에서 화면에 특정 요소가 있는지 확인하거나 상태를 검증할 수 있는 것입니다!
React Testing Library의 screen 객체에는 다양한 메서드가 있으며, 필요에 따라 적절한 메서드를 사용하여 테스트를 작성할 수 있습니다. 이번 글에서는 우선으로 사용할 쿼리들에 대해 알아보려고 합니다 :)
command[All]ByQueryType
command
✔️ get : 요소가 DOM에 있을 것을 expect
✔️ query : 요소가 DOM에 없을 것을 expect
✔️ find : 요소가 비동기적으로 나타날 경우를 expect
[All]
✔️ 포함O : 하나 이상의 매치를 expect하는 경우, 매처(Matcher)를 이용해 전체 배열을 얻을 수 있음
✔️ 포함X : 하나의 매치만 expect하는 경우
QueryType
QueryType은 무엇으로 검색을 하는지를 의미합니다.
✔️ Role : 코드의 접근성을 보장하기 위해 가장 선호되는 방법
✔️ AltText : 이미지를 찾기 위한 방법
✔️ Text : 요소를 디스플레이하기 위한 방법. 특정한 역할이 없는, 비상호작용적인 디스플레이 요소에 대해 사용하기도
✔️ PlaceholderText, LabelText, DisplayValue : Form 요소를 찾기 위한 방법
이들을 섞어서 사용하면 됩니다. 예를 들어 getAllByText, 혹은 findByAltText, queryAllByLabelText로 사용하는 식이죠! 이런 식으로 DOM에서 찾고자 하는 내용에 가장 적절한 방식으로 섞어서 사용하는 겁니다!
만약 Document에서 어떤 문장을 찾는다고 한다면 아래와 같겠죠?
const termsAndConditions = screen.getByText(/terms and conditions/i);
공식 문서에는
공식 문서에는 다양한 조합들이 소개되어 있기도 합니다. 위 조합이 무엇이든 관련 내용이 정리되어 있습니다. 무엇을 반환할지, 오류를 발생시킬지 등의 내용이 있습니다.

https://testing-library.com/docs/queries/about/
About Queries | Testing Library
Overview
testing-library.com
https://testing-library.com/docs/react-testing-library/cheatsheet/
Cheatsheet | Testing Library
Get the printable cheat sheet
testing-library.com
https://testing-library.com/docs/queries/about/#priority
About Queries | Testing Library
Overview
testing-library.com
'프론트엔드 > React' 카테고리의 다른 글
| [React] Lazy loading과 Code splitting - 적당히 적당히 가져오자 (0) | 2023.06.13 |
|---|---|
| [React] Virtual DOM과 ✨React 렌더링 동작 원리✨ with Fiber (2) | 2023.06.12 |
| [React] TDD로 간단하게 개발해보기 - color button 예제 (0) | 2023.06.06 |
| [React] React Testing Library (RTL)에 대해 알아보자 (0) | 2023.06.06 |
| [React] Watch 모드와 테스트가 작동하는 방식 (0) | 2023.06.06 |
- Total
- Today
- Yesterday
- 자바스크립트 기초
- 디프만
- frontend
- Python
- styled-components
- testing
- 프론트엔드 기초
- 스타일 컴포넌트 styled-components
- 파이썬
- 프로젝트 회고
- jest
- 인프런
- rtl
- 데이터분석
- JSP
- react-query
- 프론트엔드
- HTML
- 자바
- CSS
- 자바스크립트
- 머신러닝
- react
- 리액트
- TypeScript
- 딥러닝
- 프론트엔드 공부
- 타입스크립트
- next.js
- 리액트 훅
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |