React 测试库:何时使用 userEvent.click 以及何时使用 fireEvent

2024-03-27

我目前正在学习 React-Testing-Library。

我想测试鼠标与元素的交互。目前我还不清楚 userEvent.click(element) 和 fireEvent.click(element) 之间的区别。两者都建议使用吗?在下面的示例中它们是否得到了正确实施?

const mockFunction = jest.fn(() => console.info('button clicked'));
const { getByTestId } = render(<MyAwesomeButton onClick={mockFunction} />);
const myAwesomeButton = getByTestId('my-awesome-button');

// Solution A
fireEvent(myAwesomeButton)
expect(mockFunction.toHaveBeenCalledTimes(1);

// Solution B
userEvent.click(myAwesomeButton);
expect(mockFunction).toHaveBeenCalledTimes(1);

预先感谢您的澄清。


在幕后,userEvent使用fireEvent。你可以考虑fireEvent是低级 api,同时userEvent设置动作流程。

这是代码userEvent.click https://github.com/testing-library/user-event/blob/5feaa942f46bb37d96c2f2fbeb4b33e8beff75ad/src/click.js#L87-L103

您可以看到,根据您尝试单击的元素,userEvent将执行一组不同的操作(例如,如果它是标签或复选框)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 测试库:何时使用 userEvent.click 以及何时使用 fireEvent 的相关文章

随机推荐

  • 使用验证器 jQuery 验证 Click 事件上的表单

    我正在使用 jQuery validate 来验证输入 我的代码 button click function form validate rules phone required true number true rangelength 7
  • 测试 Google Analytics iOS SDK

    有人找到了在 iOS 上测试 Google Analytics 的好方法吗 SDK 非常简单 但文档没有讨论如何测试或验证 该库在模拟器上或运行调试构建配置时的行为是否有所不同 我使用此委托方法设置了委托 GANTrackerDelegat
  • 紧凑框架中的网络浏览器

    我想用一个WebBrowser NET Compact Framework 3 5 项目中的组件 我面临着关于此的相互矛盾的信息 如果我只是尝试使用它 我会得到以下异常 System Threading ThreadStateExcepti
  • 椭圆弧箭头边缘d3力布局

    我正在使用强制布局来创建有向图 它渲染在画布上 我的示例位于http jsbin com vuyapibaqa 1 edit html 输出 http jsbin com vuyapibaqa 1 edit html output 现在我的
  • 无法在 DayNight 主题中动态切换模式

    我在我的应用程序中实现了 DayNight 主题 并添加了一个在白天和夜间模式之间切换的设置 但如果不重新启动 我无法在模式之间动态切换 如果我使用setDefaultNightMode 设置更改后 设置活动不会更改模式 但后台堆栈中的活动
  • VS Code 中的 SQL 调试

    我已经在 Windows 上安装了 VS code 工具并探索其功能 到目前为止 我想说它是一个很棒的工具 与传统的 SSMS 相比 它具有一些很酷的功能 我面临的困难是 在 VS Code 中使用 debug 当我单击调试时 它会在活动栏
  • C:执行 {...} while(0)? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 C C 宏中有时会出现无意义的 do while 和 if else 语句 https stackoverflow com questions 154136 why are there som
  • 为什么 SQL Server 2008 Management Studio Intellisense 不工作?

    我正在疯狂地试图找出为什么智能感知根本无法工作 我使用的服务器是本地的 并且是 2008 年的 数据库设置为 2008 兼容性 智能感知在我能找到的每个菜单中都打开 但即使使用 CTRL J 也不会弹出任何成员列表 有没有人经历过类似的事情
  • Chrome Timeline 开发工具中的图像解码时间

    我正在构建一个视差滚动网站 不是我们所有人吗 除其他外 它会在用户滚动时显示图像 我通过将图像放在背景中并在顶部放置一个实心填充的 div 来完成 显示 然后 我根据滚动位置将该 div 从 100 高度设置为 0 高度 从而显示背景图像
  • 是否可以在 ng 服务之前和 Angular 7 中的实时重新加载/自动重新加载之前运行自定义脚本?

    在从 Angular cli 启动 ngserve 命令之前以及在 Angular 实时重新加载 自动重新加载之前 我必须运行自定义脚本吗 除了修改 package json 之外 是否可以使用 Angular 7 找你的package j
  • 如何为实际使用数据库上下文的 ASP.NET Core 控制器编写单元测试?

    关于如何编写良好的单元测试的信息似乎很少actualASP NET Core 控制器操作 关于如何使这项工作真正发挥作用有什么指导吗 我有一个系统 现在似乎运行得很好 所以我想我应该分享它 看看它是否能帮助其他人 有一个实体框架文档中非常有
  • Neo4j 3.0 中的存储过程

    我在 Windows 上使用 neo4j 3 0 并尝试使用存储过程新功能 我已经构建了 apoc jargithub 来源 https github com neo4j contrib neo4j apoc procedures 该 ja
  • R ggplot2:如何绘制具有纯色和透明笔触并根据颜色着色的geom_points?

    我想制作一个散点图 其中每个点都有一个球体 点及其球体都根据某些列值着色 一个显示我想要的最小示例 library ggplot2 library vcd only needed for example dataset ggplot Art
  • c、unix 中的睡眠函数

    我需要导入什么才能在unix中使用睡眠功能 我知道windows 是windows h 但是unix 呢 它应该位于 unistd h 中 请注意 这只能提供整数秒的精度 亚秒精度最便携的方法应该是 ab 使用 select
  • node.js:在全局范围内使用“this”令人困惑

    我最近一直在玩弄node js 并且遇到了关于使用的奇怪行为this在模块的全局范围内 this在全局范围内绑定到 module exports console log this exports gt true But this在方法范围内
  • 模块“QtQuick.Dialogs”版本 1.3 未安装

    我正在尝试在运行 1 2 版时没有任何问题的代码中导入 QtQuick Dialogs 1 3 版 但是在运行时我收到以下错误 模块 QtQuick Dialogs 版本 1 3 未安装 我正在使用默认的 Desktop Qt 5 9 2
  • 如何安全地读取 ASP.NET 中的流?

    byte bytes new byte uploader UploadedFiles 0 InputStream Length uploader UploadedFiles 0 InputStream Read bytes 0 bytes
  • Eclipse makefile 构建速度很慢...是什么原因?

    我们是 Eclipse 的狂热粉丝 这太棒了 但我们有大约 40 个 C 项目 并且还在不断增长 当所有项目都是最新的时 构建所有这些项目大约需要半分钟 总共 如果我只是创建一个对所有 40 个项目执行 make all 的 bash 脚本
  • 为什么 golang 左移 64 位不会溢出?

    我正在看围棋之旅 https tour golang org basics 11我对 basic types go 示例中的某些内容感到困惑 MaxInt uint64 1 lt lt 64 1 在无符号 64 位整数中向左移动 1 64
  • React 测试库:何时使用 userEvent.click 以及何时使用 fireEvent

    我目前正在学习 React Testing Library 我想测试鼠标与元素的交互 目前我还不清楚 userEvent click element 和 fireEvent click element 之间的区别 两者都建议使用吗 在下面的