设置
当用户在浏览器中进行交互(例如按键盘键)时,他们会与浏览器向他们显示的 UI 层进行交互。然后浏览器解释此输入,可能相应地更改底层 DOM 并分派 受信任的 事件。
UI 层和受信任的事件在编程上不可用。
因此,user-event
必须应用解决方法并模拟 UI 层以模拟用户交互,就像它们在浏览器中发生一样。
每个 setup()
启动一个会话
setup(options?: Options): UserEvent
userEvent.setup()
API 将这些解决方法应用于文档,并允许您 配置 user-event
的“实例”。
此实例上的方法共享一个输入设备状态,例如哪些键被按下。
这允许编写多个连续交互,这些交互的行为就像真实用户所描述的交互一样。
import userEvent from '@testing-library/user-event'
const user = userEvent.setup()
await user.keyboard('[ShiftLeft>]') // Press Shift (without releasing it)
await user.click(element) // Perform a click with `shiftKey: true`
该实例公开了另一个 .setup()
API,它允许配置另一个共享相同输入设备状态的实例。
剪贴板 API 通常在安全上下文之外不可用。
为了能够测试涉及剪贴板的工作流程,userEvent.setup()
用一个存根替换 window.navigator.clipboard
。
直接 API
您也可以直接在默认导出上调用 API。这将在内部调用 setup
,然后在实例上使用该方法。
这样做是为了简化向版本 14 的过渡并编写简单的测试。建议使用由 userEvent.setup()
返回的实例上的方法。