首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React 组件如何写单元测试

然后用 fireEvent.click 触发 button 的点击事件。 断言 p 标签的文本是 open。...测试通过了: fireEvent 可以触发任何元素的任何事件: 那如何触发 change 事件呢? 这样写: 第二个参数传入 target 的 value 值。...除了 fireEvent.xxx 来触发 xxx 事件外,你还可以 fireEvent 传入自定义事件。 直接 new Event,然后用 fireEvent 传给某个元素。...触发事件也是用 fireEvent: 这就是 hooks 的单测写法。 总结 单元测试能保证函数、类的方法等代码单元的功能正常,把手动测试变成自动化测试。...主要是用 @testing-library/react 这个,它有一些 api: render:渲染组件,返回 container 容器 dom 和其他的查询 api fireEvent触发某个元素的某个事件

41520

用Jest来给React完成一次妙不可言的~单元测试

Enzyme[3] 也是十分出色的单元测试,我们应该选择哪种测试工具呢?...为此,我们大部分时间使用了来自DOM测试fireEvent,其签名如下: fireEvent(node: HTMLElement, event: Event) 简单地说,这个函数接受一个DOM节点(...并触发DOM事件,如单击、焦点、更改等。您可以在这里找到许多其他可以调度的事件。...注意:这个AAA模式并不特定于测试。事实上,它甚至是任何测试用例的一般结构。我在这里向您展示这个是因为我发现测试如何方便地在每个部分中编写测试是一件很有趣的事情。...第一个测试使用 fireEvent.click() 触发一个 click 事件,检查单击按钮时计数器是否增加到1。 第二个检查当点击按钮时计数器是否减为-1。

14.8K33
您找到你想要的搜索结果了吗?
是的
没有找到

使用 React Testing Library 的 15 个常见错误

以前的我(Kent)并不是很喜欢那个时候的测试环境,为此写了一个 React Testing Library。...上面这个例子中,fireEvent.change 其实只触发了 Input 的一个 Change 事件。...我们现在还在进行 @testing-library/user-event 这个的开发,来保证它能像它承诺的那样:能够触发用户在执行特定操作时会触发的所有相同事件。...建议:如果你想断言某个东西是否存在,那么就做显式的断言操作 总结 作为测试工具系列的维护者,我们尽最大努力使 API 能够引导人们尽可能有效地使用,一些不足之处,我们会尝试正确地记录下来,即使这会非常地困难...翻译这篇文章还是花不少时间的,同时也学到了很多 RTL 这个的一些思想,希望大家也能吸收里面一些测试思路。

1.2K20

如何测试驱动开发 React 组件?

本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...测试组件 首先使用 create-react-app 初始化一个 react 项目。目前 cra 已经内置了 @testing-library/react 作为测试框架。...首先通过 getByRole 方法 查找 role属性等于dialog能否文档中找到。 role 属性可能不太常用, 当现有的 HTML 标签不能充分表达语义性的时候,就可以借助 role 来说明....: import React from 'react' import { render, fireEvent } from '@testing-library/react' import Confirmation...例如: 如何出测试 react hooks ? 如何测试 react 路由? 如何测试接口? 希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

2.2K10

前端反卷计划-组件-04-Button组件开发

今天开始分享如何从0搭建UI组件。这也是前端反卷计划中的一项。在接下来的日子,我会持续分享前端反卷计划中的每个知识点。以下是前端反卷计划的内容:目前这些内容持续更新到了我的 学习文档 中。...path=/docs/example-button--docs4.5 单元测试测试工具https://testing-library.com/docs/react-testing-library/intro...npm install --save-dev @types/jest4.5.1 测试1:展示正确的默认按钮import React from 'react'import { render, fireEvent...4.5.6 完整测试用例代码import React from 'react'import { render, fireEvent } from '@testing-library/react'import...-组件-02-storybook前端反卷计划-组件-03-组件样式持续更新目前这些内容持续更新到了我的 学习文档 中。

28310

如何测试驱动开发 React 组件?

本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...测试组件 首先使用 create-react-app 初始化一个 react 项目。目前 cra 已经内置了 @testing-library/react 作为测试框架。...首先通过 getByRole 方法 查找 role属性等于dialog能否文档中找到。 role 属性可能不太常用, 当现有的HTML标签不能充分表达语义性的时候,就可以借助role来说明....: import React from "react"; import { render, fireEvent } from "@testing-library/react"; import Confirmation...小结 当然 @testing-library/react 还有很多方便的 api。大家可以自行查阅。 未来可能会出一些文章关于测试的文章。例如: 如何出测试 react hooks ?

2.1K10

从零打造组件

那么,做一套组件,容易吗? 答案肯定是不容易,当你去做这件事的时候,会发现它其实是一套体系。从开发、编译、测试,到最后发布,每一个流程都需要大量的知识积累。...__tests__​ 是组件的单元测试目录,后续会单独讲到。具体 ​Alert​ 和 ​Button​ 组件的代码都很简单,这里就不赘述,大家可以去源码里找到。...还有一种是基于 ​DOM​ 的测试,基于 ​@testing-library/react: import React from 'react'; import { fireEvent, render,...render​ 将组件渲染到 ​DOM​ 中,​screen​ 提供了各种方法可以从页面中获取相应 ​DOM​ 元素,​fireEvent​ 负责触发 ​DOM​ 元素绑定的事件。...的完整测试,并且对比了 ​Enzyme​ 和 @testing-library/react​ 的区别,是很好的入门文章 React 单元测试策略及落地:系统的讲述了单元测试的意义及落地方案 组件打包

1.6K10

40道ReactJS 面试问题及答案

c) 优化捆绑包大小:密切关注捆绑包大小,并通过删除使用的依赖项、使用树摇动和最小化大型的使用来优化它。...:为组件编写测试涉及使用 Jest 和 React 测试测试来确保组件按预期运行。...以下是测试 React 应用程序的一些常用方法: 单元测试:使用 Jest 等测试框架以及 Enzyme 或 React 测试等工具为各个组件编写单元测试。...您可以使用 Jest 和 React 测试等工具来模拟用户交互并测试应用程序的整体行为。...测试: 编写单元测试、集成测试和端到端测试,以确保 React 组件和应用程序的可靠性和功能性。 使用 Jest、React 测试、Enzyme 或 Cypress 等测试来编写和运行测试

18510

Sentry 开发者贡献指南 - 前端(ReactJS生态)

Typing DefaultProps 类(Class)组件 函数式(Function)组件 参考 使用 Hooks 使用中的 hooks 使用 react 的内置 hooks 使用 context...当您触发某些逻辑并且没有立即在您的断言逻辑中反映出来时,这可能会使您陷入一种虚假的安全感。...使用 React Testing Library 我们正在将我们的测试从 Enzyme 转换为 React Testing Library。在本指南中,您将找到遵循最佳实践和避免常见陷阱的技巧。...我们通过 label 文本找到表单元素(就像用户一样),我们从他们的文本中找到链接和按钮(就像用户一样)。 作为此目标的一部分,我们避免测试实现细节,因此重构(更改实现但不是功能)不会破坏测试。...如果没有找到元素,getBy... 和 findBy... 变量将抛出更有用的错误消息。

6.9K30

Vue和React的区别

在本文中,我们将比较 Vue 和 React 的一些关键方面,包括语法、组件化、状态管理、生态系统、性能和可测试性。 语法 Vue 和 React 的语法非常不同。...而 React 的生态系统更加分散,因为 React 的核心团队不积极地推广任何特定的或插件。这意味着在 React 生态系统中,开发人员需要更多地依靠社区来发现和选择最佳的和插件。...React 的性能优化是通过自动化和优化算法来实现的,这使得 React 的性能在大多数情况下仍然非常出色。 可测试性 Vue 和 React 都非常容易进行单元测试。...中,开发人员可以使用 React Testing Library 来编写单元测试。...例如,下面是一个简单的 React 单元测试: import { render, screen, fireEvent } from '@testing-library/react'; import Counter

15110

React 现代化测试

(代表: eslint、flow、TypeScript) 单元测试: 在奖杯模型中, 单元测试的职责是对一些边界情况或者特定的算法进行测试。...(代表: jest、mocha) 集成测试: 模拟用户的行为进行测试, 对网络请求、获取数据的数据等依赖第三方环境的行为进行 mock。...(代表: jest、react-testing-library) e2e 测试: 模拟用户在真实环境上操作行为(包括网络请求、获取数据数据等)的测试。...(代表: cypress) 越是上层的测试给开发者带来的自信是越大的, 与此同时, 越是下层的测试测试的效率是越高的。奖杯模型综合考虑了这两点因素, 可以看到其在集成测试中的占比是最高的。...相较于 enzyme, react-testing-library 所提供的 api 更加贴近用户的使用行为, 使用其对上述测试用例进行重构: import { render, fireEvent }

92330

activiti 自定义任务事件扩展

这不,业务需求有来有,用户希望在回复沟通时,能触发回复沟通事件,而用户通过该事件触发他的业务事件。 回复沟通是这边流程的自定义的操作, activti没这种操作,怎么办?...看来只能动手自己扩展了 1.Web端 要扩展,首先要在页面上要有地方配置,因为这个跟任务绑定在一起的,放在任务监听器中 找到页面task-listeners-popup.html(这边用的是activiti-explorer...clipboard.png OK,前端改造完成,用户可以选择了. 2.后端代码 跟一下代码,发现对象TaskEntity有发布事件的方法fireEvent,那急急的加入以下代码 TaskEntity...测试一下,Oh,Shit,报错了!...RuntimeServiceImpl)runtimeService).getCommandExecutor().execute(new OperationCommand(taskId,formData,“specCode”)); 经测试

1.8K10
领券