单元测试基础 测试框架 - Jest Fast 天下武功,唯快不破。 Opinionated 开箱即用。 Watch Mode 守护模式。 Snapshot Testing 快照测试。...Testing Library vs Enzyme React Testing Library 的 API 明显优于 Enzyme,不至于陷入细节,是用于测试 React 应用的一大利器。...import { screen, render } from '@testing-library/react' test('should show h1 title', () => { // given...Library userEvent import { render, screen } from '@testing-library/react' import userEvent from '@testing-library...推荐书籍 React 官方中文文档 – 用于构建用户界面的 JavaScript 库 React Testing Library 《深入 React 技术栈》 《深入浅出React和Redux》 《重构
Jest 和 React Testing Library (RTL) 是前端开发中用于测试 React 应用的首选工具。...Jest 是一个功能丰富的JavaScript测试框架,而React Testing Library 是一种提倡以用户角度编写测试的库,它鼓励测试组件的行为而不是内部实现细节。...安装和配置首先,确保你已经安装了react, react-dom, jest, @testing-library/react, 和 @testing-library/jest-dom。...测试组件的交互性React Testing Library 强调测试组件的行为,而不是它的实现细节。...选择性运行测试使用--findRelatedTests选项只运行与更改相关的测试,以加快测试速度:npx jest --findRelatedTests使用快照测试对于不经常更改的组件,使用快照测试可以节省时间
原文:https://css-tricks.com/testing-react-hooks-with-enzyme-and-react-testing-library/ 当你开始在应用中使用React...我们将介绍使用Enzyme和React Testing Library编写测试,这两个库都能做到这一点。...使用react-testing-library测试 我们将为此写三个测试: 1、初始待办事项的渲染 2、我们可以加一个新的待办事项 3、我们可以删除一个待办事项 首先,我们安装需要的安装包: npm install...--save-dev @testing-library/jest-dom @testing-library/react 接下来,我们可以导入安装包和文件: import React from "react...无论你是使用Enzyme或是enzyme与React Testing Library其中之一来写测试完全取决于你。不管怎样,试着使用linting,毫无疑问,你会很高兴你这样做了。
Reconciler(协调器)—— 负责找出变化的组件传入渲染器 Renderer(渲染器)—— 负责渲染任务,将渲染器传来的组件渲染进页面 对应的架构是怎么体现在文件上的,我们目前并不知道,...: react- 开头的文件夹 react文件夹 scheduler调度器文件夹 shared 发现这里存放着很多公用的变量、函数、类型,那这块晚点看 其他包 那么我们会发现这里有两个显而易见的核心...react&&scheduler,当然react-开头的文件夹也是重点,其中对应架构的文件夹基本如下: Renderer渲染器放在哪?...react-fetch 用于数据请求,这个不用说 react-interactions 用于测试交互相关的内部特性,比如React的事件模型 react-reconciler 上文说过...,reconciler是协调器,这里让我们可以构建自己的Renderer 辅助包 react-is 用于测试组件是否是某类型 react-refresh 热重载的react官方实现;
: npm test # React Testing Library React Testing Library 基于 DOM Testing Library 添加了用于处理 React 组件的 API...更多信息,请访问 https://testing-library.com/docs/react-testing-library/intro (opens new window)。...label htmlFor="search">Search:).toJSON(); expect(tree).toMatchSnapshot(); }); 当应用程序中发生更改时,快照测试将捕获更改并将其与先前的快照进行比较...# React 测试最佳实践 对每个组件编写测试 为每个组件编写测试,以确保它们能够正确地渲染和响应 使用测试库 使用 Jest 和 React Testing Library 等测试库,它们提供了专门用于测试...React 组件的工具和函数 编写测试用例 编写完整的测试用例,覆盖组件的所有代码路径,包括正常情况和异常情况 使用快照测试 使用 Jest 中的快照测试功能来验证组件是否按预期呈现 使用模拟数据
技术栈选择 当我们想要为 React 应用编写单元测试的时候,官方推荐是使用 React Testing Library[1] + Jest[2] 的方式。...最后,确保App组件的片段与快照匹配。...也就是说,我们现在已经完成了八个简单的步骤来测试你的React应用程序。 更多例子请参考React Testing Library官方文档[8]。...Testing Library and Jest[11]•Test React apps with React Testing Library[12] References [1] React Testing...Testing Library: https://testing-library.com/docs/react-testing-library/intro [6] 官方文档在这里: https://testing-library.com
从 16.8.0 开始,React 包含了稳定的 React Hook 实现: React DOM React DOM 服务器 React 测试渲染器 React 浅渲染器 请注意,要启用 Hook...测试 Hook {#testing-hooks} 我们在此版本中添加了一个名为 ReactTestUtils.act() 的新API。 它可以确保你测试中的行为与浏览器中的行为更接近。...测试库也可以使用它包装 API(例如,react-testing-library 的 render 和 fireEvent 工具来执行此操作)。...如果你需要测试一个自定义的 Hook,你可以创建一个使用 Hook 的组件,然后再测试你写的组件。...为了减少样板代码,我们建议使用 react-testing-library,它旨在鼓励编写像最终用户那样使用组件的测试。
单元测试 官方文档环境安装安装依赖npm i --save-dev jest@27.4.3 npm i --save-dev babel-jest@27.4.2npm i --save-dev @testing-library.../jest-dom@5.16.5 @testing-library/react@13.4.0添加jest.config.jsmodule.exports = { testEnvironment: '...react组件,最开始使用Enzyme,后面从React脚手架创建的项目自带React Testing Library(RTL),官方推荐使用RTLimport React from "react";import...{ render, fireEvent } from "@testing-library/react";import Todo from "../.....参考使用Enzyme和React Testing Library测试React Hooks https://cloud.tencent.com/developer/article/1651156点击加入群聊
) 需提前了解的内容 Jest测试框架:https://jestjs.io/zh-Hans/docs/getting-started Testing Library React 测试工具库:https:...@testing-library/react-hooks 是一个用于测试 React Hooks 的工具库。它提供了一组用于编写可靠和可维护的测试的实用函数和工具。...Mobx Store 测试 简单场景 import { render } from '@testing-library/react'; import React from 'react'; import.../react'; import React from 'react'; import '@testing-library/jest-dom'; import userEvent from '@testing-library...act 的使用场景如下: 当你在测试中进行与 React 组件的交互(例如模拟用户点击、输入等)时,可以使用 act 来确保组件在更新后进行正确的断言。
创建/清理 act() 数据获取 mock 模块 事件 计时器 快照测试 多渲染器 缺少什么?...--- act() {#act} 在编写 UI 测试时,可以将渲染、用户事件或数据获取等任务视为与用户界面交互的“单元”。...React 提供了一个名为 act() 的助手,它确保在进行任何断言之前,与这些“单元”相关的所有更新都已处理并应用于 DOM: act(() => { // 渲染组件 }); // 进行断言 这有助于使测试运行更接近真实用户在使用应用程序时的体验...--- 快照测试 {#snapshot-testing} 像 Jest 这样的框架还允许你使用 toMatchSnapshot / toMatchInlineSnapshot 保存数据的“快照”。...--- 多渲染器 {#multiple-renderers} 在极少数情况下,你可能正在使用多个渲染器的组件上运行测试。
一、技术选型: Jest + Enzyme + react-hooks-testing-library 1.1 jest Jest是FaceBook出品的前端测试框架,适合用于React和React...二、环境配置 直接贴上所需要安装的依赖: "devDependencies": { "@testing-library/react-hooks": "^3.2.1", //React...Jest提供了snapshot快照功能用于UI测试,可以创建组件的渲染快照并将其与以前保存的快照进行比较,如果两者不匹配,则测试失败。...单元测试 在React Native v0.59版本以后,RN也支持了React Hooks的开发,由于Enzyme对于Hooks的测试支持不理想,我们专门引入了react-hooks-testing-library...10.1 安装 npm install --save-dev @testing-library/react-hooks 10.2 useState 测试 // useCityName.js import
3.1.1 初始化与安装 项目中使用了ts,需要为Jest额外准备babel和typescript环境包 pnpm i jest -D pnpm i -D babel-jest @babel/core...测试用例 with 「ReactTestingLibrary」 安装依赖包 pnpm i -D @testing-library/jest-dom @testing-library/react 在jest.setup.js...写入全局配置 import '@testing-library/jest-dom'; 写第一个测试用例: // home.test.tsx import Home from "...../pages/index"; import React from 'react' import { render, screen } from '@testing-library/react' it(...同时在此补上官网链接 「jestjs.io/docs/gettin… 」 「testing-library.com/docs/react-… 」 建议有问题还是啃文档吧 再补上一些有用的教程 「juejin.cn
使用 hooks 的代码仍然可以与使用类的现有代码并存。 从今天起就可以使用 hooks 了吗? 是的!...测试 hooks 我们在这个版本中添加了一个叫作 ReactTestUtils.act() 的 API,它可以确保测试中的行为与在浏览器中的行为更加接近。...测试库也可以用它来包装它们的 API(例如,react-testing-library 的 render 和 fireEvent 就是这样做的)。...为了减少样板代码,我们建议使用 react-testing-library(https://git.io/react-testing-library),你可以像最终用户使用组件那样对组件进行测试。...React Test Renderer 支持在浅渲染器中使用 hooks。
Router 在正常工作后, 重构代码到使用 Redux 使用 React Testing Library 测试应用程序 React Testing Library | Testing Library...Testing: 快照测试 安装 React 的测试渲染器 yarn add --dev react-test-renderer yarn add --dev @types/react-test-renderer...npm npm i react-test-renderer --save-dev npm i @types/react-test-renderer --save-dev 创建您的第一个快照测试 为组件添加快照测试...请参阅 此 ESLint 规则 以获取 react-testing-library。 拍摄快照 拍摄组件的快照。...@testing-library/react # 等同于 下方 yarn add -D @testing-library/react # npm npm install --save-dev @testing-library
JavaScript 测试教程[10] 教程包含 10 个部分,包括单元测试、快照测试、集成测试、端到端测试(E2E) 等等。...Jest 基础知识 使用 Enzyme 测试 React 组件 组件 Props 测试、mount 函数渲染、快照测试 Mock 模拟 API 调用、模拟 React 组件交互 使用 react-hooks-testing-library...测试 Hooks 使用 Cypress 进行端到端测试(E2E) 对比 React Testing Library 和 Enzyme 使用 Jest 和 React Testing Library 的...Mock 进阶 Linux 命令行世界的生存指南[11] 这本电子书用讲故事的方式介绍了如何生存在 Linux 命令行的世界,着眼于更宏大的视角,试着向你传授如何与命令行界面友好的相处。...: https://wanago.io/2022/04/18/advanced-mocking-jest-react-testing-library/ [11] Linux 命令行世界的生存指南: https
尝试测试 React Hooks Hooks 是 React 的一个令人兴奋的补充,毫无疑问,它可以帮助我们将逻辑与模板分离。这样做使上述逻辑更具可测试性。不幸的是,测试钩子并没有那么简单。...在本文中,我们研究了如何使用 react-hooks-testing-library[2] 处理它。...这就是我们使用 react-hooks-testing-library[4] 的原因,我们将在下一篇教程里讲解如何更加舒适的测试 React Hooks 的方法,敬请期待!...参考资料 [1] simulate: https://enzymejs.github.io/enzyme/docs/api/ShallowWrapper/simulate.html [2] react-hooks-testing-library.../docs/hooks-overview.html [4] react-hooks-testing-library: https://wanago.io/2019/12/09/javascript-design-patterns-facade-react-hooks
如今,市面上有两个用于测试 React 组件的库在相互竞争:Enzyme 和 React Testing Library,我想说服你的是不要在你的新代码中继续使用 Enzyme 了。...,Kent C.Dodds 在他的博客上宣布了 React Testing Library 的发布,这彻底改变了在 React 中编写单元测试的方法。...似乎 Facebook——React 的诞生地——已经冻结了他们的 Enzyme 测试并禁止在任何新测试中使用它: 虽然与这个问题无关,但我认为值得注意的是,如果你可以使用像 React Testing...我更经常看到的是组件 props 的快照,它完全没有说明测试用例的意图,并且将测试与内部实现细节紧密耦合起来。...如果你正在思考该如何拆分你的测试,我鼓励你在 React Testing Library 中编写尽可能多的测试。如果某些东西不能在 RTL 中测试(比如通过拖放在 SVG 中绘制一个矩形!)
最近一直在看 Kent 的文章,刚好看到他写的这篇 《Common mistakes with React Testing Library》,里面列举了很多别人写单测时经常犯的一些错误 。...以前的我(Kent)并不是很喜欢那个时候的测试环境,为此写了一个 React Testing Library。...: eslint-plugin-testing-library eslint-plugin-jest-dom 注:如果你已经在用 create-react-library,那 eslint-plugin-testing-library...Library v6.11.0 引入的 (就就是说,你可以在 @testing-library/react@>=9 这些版本中使用它)。...参考资料 [1] 原文: https://kentcdodds.com/blog/common-mistakes-with-react-testing-library
Dodds 安装 yarn add jest babel-jest @babel/preset-env @babel/preset-react react-test-renderer @testing-library...下次再执行测试用例的时候,如果我们修改了组件的源码,那么会将本次的结果快照和上次的快照进行比对,如果不匹配,则测试不通过,需要我们修改测试用例更新快照。...还有一种是基于 DOM 的测试,基于 @testing-library/react: import React from 'react'; import { fireEvent, render,...screen } from '@testing-library/react'; import renderer from 'react-test-renderer'; import Button from...的完整测试,并且对比了 Enzyme 和 @testing-library/react 的区别,是很好的入门文章 React 单元测试策略及落地:系统的讲述了单元测试的意义及落地方案 组件库打包
至少,您可以使用 React-test-renderer 在 Jest 测试中渲染 React 组件。这已经足以用 jest 来执行所谓的快照测试了。...快照测试的工作方式如下: 运行测试之后,将创建 React 组件中渲染的 DOM 元素的快照。当您在某个时间点再次运行测试时,将创建另一个快照,用作前一个快照的差异。...最终,您会发现自己在使用 Enzyme 或 React Testing Library (这两个都在 Jest 测试环境中使用)来进行更详细的测试功能集。...建议: Unit/Integration/Snapshot Tests: Jest + React Testing Library E2E Tests: Cypress 2e test: Cypress...: Jest with React Testing Library 实用程序库: JavaScript 国际化: react-i18next React 桌面: Electron 大型应用程序 样板文件
领取专属 10元无门槛券
手把手带您无忧上云