跳至主要内容

速查表

获取可打印的速查表

React Testing Library 中所有导出函数的简要指南

  • render const {/* */} = render(Component) 返回
    • unmount 用于卸载组件的函数
    • container 组件挂载的 DOM 节点的引用
    • 来自 DOM Testing Library 的所有查询,绑定到文档,因此无需将节点作为第一个参数传递(通常,您可以使用 screen 导入代替)
import {render, fireEvent, screen} from '@testing-library/react'

test('loads items eventually', async () => {
render(<Page />)

// Click button
fireEvent.click(screen.getByText('Load'))

// Wait for page to update with query text
const items = await screen.findAllByText(/Item #[0-9]: /)
expect(items).toHaveLength(10)
})

查询

与 DOM 测试库的差异

React Testing Libraryrender 返回的查询与 DOM Testing Library 相同,除了它们将第一个参数绑定到文档,因此您无需 getByText(node, 'text') 而是 getByText('text')

参见 我应该使用哪个查询?

无匹配项1 个匹配项1+ 个匹配项异步?
getBy抛出返回抛出
findBy抛出返回抛出
queryBynull返回抛出
getAllBy抛出数组数组
findAllBy抛出数组数组
queryAllBy[]数组数组
  • ByLabelText 按标签或 aria-label 文本内容查找
    • getByLabelText
    • queryByLabelText
    • getAllByLabelText
    • queryAllByLabelText
    • findByLabelText
    • findAllByLabelText
  • ByPlaceholderText 按输入占位符值查找
    • getByPlaceholderText
    • queryByPlaceholderText
    • getAllByPlaceholderText
    • queryAllByPlaceholderText
    • findByPlaceholderText
    • findAllByPlaceholderText
  • ByText 按元素文本内容查找
    • getByText
    • queryByText
    • getAllByText
    • queryAllByText
    • findByText
    • findAllByText
  • ByDisplayValue 按表单元素的当前值查找
    • getByDisplayValue
    • queryByDisplayValue
    • getAllByDisplayValue
    • queryAllByDisplayValue
    • findByDisplayValue
    • findAllByDisplayValue
  • ByAltText 按 img alt 属性查找
    • getByAltText
    • queryByAltText
    • getAllByAltText
    • queryAllByAltText
    • findByAltText
    • findAllByAltText
  • ByTitle 按 title 属性或 svg title 标签查找
    • getByTitle
    • queryByTitle
    • getAllByTitle
    • queryAllByTitle
    • findByTitle
    • findAllByTitle
  • ByRole 按 aria 角色查找
    • getByRole
    • queryByRole
    • getAllByRole
    • queryAllByRole
    • findByRole
    • findAllByRole
  • ByTestId 按 data-testid 属性查找
    • getByTestId
    • queryByTestId
    • getAllByTestId
    • queryAllByTestId
    • findByTestId
    • findAllByTestId

异步

React 测试库从 dom-testing-library 重新导入了 dom-testing-library 异步 API

  • waitFor(Promise)在它停止抛出或超时之前重试函数
  • waitForElementToBeRemoved(Promise)在它不再返回 DOM 节点之前重试函数

事件

参见 事件 API

  • fireEvent 触发 DOM 事件:fireEvent(node, event)
  • fireEvent.* 用于默认事件类型的帮助程序
  • actreact act 的包装器;React 测试库已在对 act 的调用中包装了 renderfireEvent,因此大多数情况下应该不需要手动使用它

其他

参见 在元素内查询配置 API清理

  • within 获取一个节点并返回一个包含绑定到该节点的所有查询的对象(用于返回 React Testing Libraryrender 方法的查询):within(node).getByText("hello")
  • configure 更改全局选项:configure({testIdAttribute: 'my-data-test-id'})
  • cleanup 清除 DOM(afterEach 一起使用 以在测试之间重置 DOM)

文本匹配选项

给定以下 HTML

<div>Hello World</div>

找到 div

// Matching a string:
getByText('Hello World') // full string match
getByText('llo Worl', {exact: false}) // substring match
getByText('hello world', {exact: false}) // ignore case

// Matching a regex:
getByText(/World/) // substring match
getByText(/world/i) // substring match, ignore case
getByText(/^hello world$/i) // full string match, ignore case
getByText(/Hello W?oRlD/i) // advanced regex

// Matching with a custom function:
getByText((content, element) => content.startsWith('Hello'))

获取可打印的速查表