设置
当用户在浏览器中通过按键盘键等方式进行交互时,他们与浏览器提供的 UI 界面层进行交 互。然后,浏览器解释这些输入,可能会相应地改变底层的 DOM,并派 发可信的事件 。
UI 层和受信任的事件是不能以编程方式使用的。
因此,user-event
必须应用变通方法和模拟 UI 层来模拟用户交互,就像在浏览器中发
生的那样。
按 setup()
开始一个会话
setup(options?: Options): UserEvent
userEvent.setup()
API 将这些变通方法应用到 document 中,并允许
你配置一个 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()
用一个 stub
取代 window.navigator.clipboard。
直接 API
你也可以直接在默认 export 上调用 API。这将在内部调用 setup
,然后在实例上使用该
方法。
这样做是为了方便过渡到 v14 和编写简单的测试。建议在由 userEvent.setup()
返回的
实例上使用这些方法。