跳到主要内容

设置

当用户在浏览器中通过按键盘键等方式进行交互时,他们与浏览器提供的 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() 返回的 实例上使用这些方法。