가수면
테스팅 쿼리 본문
screen 쿼리 목록
https://testing-library.com/docs/queries/about/#priority
getByRole의 역할 목록
https://www.w3.org/TR/wai-aria/#role_definitions
logRoles를 사용하면 역할을 알아낼 수 있음
import { logRoles, render, screen } from "@testing-library/react";
import App from "./App";
test("버튼의 초기 색상이 올바른지 테스트", () => {
const { container } = render(<App />);
logRoles(container);
//
console.log
button:
Name "파란색으로 변경":
<button
style="background-color: red;"
/>
매처 목록
https://github.com/testing-library/jest-dom
쿼리 기본 매커니즘
command[all]ByQueryType
아래 항목들을 조합해서 사용
command
get - DOM에 있을 것으로 expect하는 경우 사용
query - 요소가 DOM 내에 있지 않을 것으로 expect하는 경우 사용 (ex. 툴팁 등)
find - 쿼리는 요소가 나타날 것으로 예상하지만 DOM에 대한 변경이 즉시 발생하지 않을 수 있을 때 작동. (비동기에 사용)
[all]
생략 가능
QueryType
Role (대부분의 경우)
AltText (image)
Text (보이는 요소)
PlaceholderText, LabelText, DisplayValue (form 요소들)
쿼리 상세
getByRole
접근성 트리 에 노출된 모든 요소를 조회하는 데 사용할 수 있다. 이 옵션을 사용하면 액세스 가능한 이름 name 으로 반환된 요소를 필터링할 수 있다.
예시 )
screen.getByRole('button', {name: /submit/i})
매처
숫자나 문자열 => toBe()
객체나 배열 => toEqual()
부정의 경우 not을 붙이면 됨 - 예시) .not.toBeChecked()
toHaveStyle(css: string | object) - 스타일 확인
주의
둘 다 통과되는 오류가 있다.
.toHaveStyle({backgroundColor: 'red'})
.toHaveStyle({backgroundColor: 'I can put anything I want in here'})
케밥 케이스를 사용하면 해당 오류 해결 가능
.toHaveStyle({ "background-color": "red" });
.toHaveStyle("background-color: red");
렌더링 일으킨 다음 다시 조회해야 함
await userEvent.click(요소);
expect(items.length).toBe(2);
await userEvent.click(요소);
expect(items.length).toBe(1);
toHaveTextContent(text: string | RegExp, options?: {normalizeWhitespace: boolean}) - 텍스트 확인
toBeEnabled() / toBeDisabled() - 활성화 됐는지
toHaveBeenCalledTimes => 최소 호출 횟수
toBeCalledTimes => 정확한 호출 횟수
toHaveBeenCalledWith vs toBeCalledWith => 똑같은 기능임
가상 DOM에만 적용할 수 있는 매처
toBeInTheDocument()
toBeVisible()
toBeChecked()
'React > 테스팅 라이브러리' 카테고리의 다른 글
msw (0) | 2023.06.30 |
---|---|
테스트 종료와 비동기 업데이트 충돌 오류 (0) | 2023.06.27 |
테스팅 라이브러리 심화 (0) | 2023.06.26 |
user-event (0) | 2023.06.23 |
테스팅 라이브러리 기본 개념 (0) | 2023.06.21 |