고전적인 방식은 render 함수 호출에서 반환된 쿼리 함수를 사용하는 것입니다. screen 객체를 사용할 때와 동일한 함수에 접근할 수 있습니다.
쿼리의 구성 요소
각 쿼리는 두 가지 요소로 구성됩니다: 변형(variant)과 조건(predicate), 그리고 두 요소는 이름의 가운데에 by라는 단어로 구분됩니다.
getByRole()
이 쿼리에서 getBy*는 쿼리 변형이고, *ByRole은 조건입니다.
쿼리 변형
쿼리 변형은 일치하는 요소의 개수와 타이밍을 설명하며, 반환 타입이 다릅니다.
변형
Assertion
반환 타입
비동기 여부
getBy*
정확히 하나의 일치하는 요소
ReactTestInstance
아니오
getAllBy*
하나 이상의 일치하는 요소
Array<ReactTestInstance>
아니오
queryBy*
0개 또는 1개의 일치하는 요소
ReactTestInstance
null
queryAllBy*
Assertion 없음
Array<ReactTestInstance>
아니오
findBy*
정확히 하나의 일치하는 요소
Promise<ReactTestInstance>
예
findAllBy*
하나 이상의 일치하는 요소
Promise<Array<ReactTestInstance>>
예
쿼리는 암시적으로 일치하는 요소의 개수를 기반으로 작동하며, 실패 시 오류를 발생시킵니다.
getBy* 쿼리
getByX(...): ReactTestInstance
getBy* 쿼리는 쿼리에 일치하는 단일 요소를 반환하며, 일치하는 요소가 없거나 둘 이상의 요소가 일치하면 오류를 발생시킵니다. 여러 개의 요소를 찾아야 한다면 getAllBy를 사용하세요.
getAllBy* 쿼리
getAllByX(...): ReactTestInstance[]
getAllBy* 쿼리는 쿼리에 일치하는 모든 요소의 배열을 반환하며, 일치하는 요소가 없으면 오류를 발생시킵니다.
queryBy* 쿼리
queryByX(...): ReactTestInstance | null
queryBy* 쿼리는 쿼리에 일치하는 첫 번째 노드를 반환하며, 일치하는 요소가 없으면 null을 반환합니다. 이는 요소가 존재하지 않는지 확인할 때 유용합니다. 둘 이상의 요소가 일치하면 오류를 발생시키므로, 여러 개의 요소를 찾으려면 queryAllBy를 사용하세요.
queryAllBy* 쿼리
queryAllByX(...): ReactTestInstance[]
queryAllBy* 쿼리는 쿼리에 일치하는 모든 노드의 배열을 반환하며, 일치하는 요소가 없으면 빈 배열([] )을 반환합니다.
해당 역할(role) 또는 accessibilityRole 속성과 일치하는 ReactTestInstance를 반환합니다.
기본적으로 Text, TextInput, Switch 호스트 요소는 접근성 요소입니다. View 호스트 요소는 accessible 속성이 true로 설정되어야 합니다. Pressable 및 TouchableOpacity와 같은 일부 React Native 컴포지트 구성 요소는 accessible 속성이 이미 설정된 호스트 View 요소를 렌더링합니다.
name: 주어진 role/accessibilityRole과 접근성 이름(= 접근성 레이블 또는 텍스트 내용)과 일치하는 요소를 찾습니다.
disabled :요소의 비활성화 상태(aria-disabled 속성 또는 accessibilityState.disabled 속성에서 가져옴)를 기준으로 필터링할 수 있습니다. 가능한 값은 true 또는 false 입니다. disabled: false를 쿼리하면 disabled: undefined 상태의 요소도 일치시킵니다. 자세한 내용은 위키를 참조하세요.
이 옵션은 toBeEnabled()/toBeDisabled() Jest 매처를 사용하여 표현할 수도 있습니다.
selected: 선택된 상태(aria-selected 속성 또는 accessibilityState.selected 속성에서 가져옴)를 기준으로 요소를 필터링할 수 있습니다. 가능한 값은 true 또는 false 입니다. selected: false를 쿼리하면 selected: undefined 상태의 요소도 일치시킵니다. 자세한 내용은 위키를 참조하세요.
이 옵션은 toBeSelected() Jest 매처를 사용하여 표현할 수도 있습니다.
checked :체크된 상태(aria-checked 속성 또는 accessibilityState.checked 속성에서 가져옴)를 기준으로 요소를 필터링할 수 있습니다. 가능한 값은 true, false, 또는 "mixed"입니다.
이 옵션은 toBeChecked()/toBePartiallyChecked() Jest 매처를 사용하여 표현할 수도 있습니다.
busy: 바쁜 상태(aria-busy 속성 또는 accessibilityState.busy 속성에서 가져옴)를 기준으로 요소를 필터링할 수 있습니다. 가능한 값은 true 또는 false 입니다. busy: false를 쿼리하면 busy: undefined 상태의 요소도 일치시킵니다. 자세한 내용은 위키를 참조하세요.
이 옵션은 toBeBusy() Jest 매처를 사용하여 표현할 수도 있습니다.
expanded: 확장된 상태(aria-expanded 속성 또는 accessibilityState.expanded 속성에서 가져옴)를 기준으로 요소를 필터링할 수 있습니다. 가능한 값은 true 또는 false입니다.
이 옵션은 toBeExpanded()/toBeCollapsed() Jest 매처를 사용하여 표현할 수도 있습니다.
value: aria-valuemin, aria-valuemax, aria-valuenow, aria-valuetext 또는 accessibilityValue 속성을 기반으로 접근성 값을 사용하여 요소를 필터링합니다. 접근성 값은 개념적으로 숫자 min, max, now 항목과 문자열 text 항목으로 구성됩니다.
이 옵션은 toHaveAccessibilityValue() Jest 매처를 사용하여 표현할 수도 있습니다.