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

JavaScript 测试系列实战(二):深层渲染和快照测试

在上一篇教程,我们已经介绍了使用 Enzyme 测试 React 组件的基本知识。...测试与 DOM 的交互或者处理高阶组件时,mount 函数也可以派上用场。_Mount 使用 DOM 实现的模拟,Jest 默认使用的是 jsdom。... TodoList 的测试代码添加快照测试: // src/TodoList.test.js import React from 'react'; import { shallow } from '...,快照测试就会失败,并且显示当前渲染结果与快照之间的精确差异。...除此之外,我们还介绍了 Jest 快照测试,这是一个非常强大的工具,可以追踪组件渲染方式的变化。接下来的文章,我们还将介绍测试中常见的 Mock 技巧——与组件的模拟交互,不见不散!

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

React 设计模式 0x8:测试

学习如何轻松构建可伸缩的 React 应用程序:测试 # 如何测试组件 测试每个 Web 应用程序中都非常重要,即使 React 也是如此,特别是在其组件方面。...可以使用 Jest 快照测试来实现这种回归测试。...这将打开一个新窗口,显示您可以使用的一些预配置测试。 要了解有关 Cypress 的更多信息,可以访问 React Quickstart (opens new window)。...# 使用 Jest 进行集成测试 大多数 React 应用程序,通常需要与外部 API 集成以应用程序中发布和获取数据。 可以使用 Jest 来测试 API 行为,以查看预期和意外结果。...React 组件的工具和函数 编写测试用例 编写完整的测试用例,覆盖组件的所有代码路径,包括正常情况和异常情况 使用快照测试 使用 Jest 快照测试功能来验证组件是否按预期呈现 使用模拟数据

1.8K10

JavaScript 测试教程–part 3:测试 props,挂载函数和快照测试

JavaScript测试教程-part 1:用 Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme 并测试 React 组件 3....JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互 在上一篇教程,我介绍了使用 Enzyme 测试 React 组件的基础知识。...早期版本的Enzyme浅层渲染期间调用生命周期方法。...测试期间,将渲染组件并创建其快照。它包含渲染组件的整个结构,应该与测试本身一起提交给存储库。再次运行快照测试时,新的快照将与旧的进行比较。如果它们不同,则测试将失败。...你还可以 watch 模式下运行 Jest,这能够允许你一个接一个地更新所有有冲突的快照

1.7K20

前端单元测试之Jest

单元测试:计算机编程,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。...; 沙箱和快速:Jest虚拟化了JavaScript的环境,能模拟浏览器,并且并行执行; 快照测试:Jest能够对React 树进行快照或别的序列化数值快速编写测试,提供快速更新的用户体验; 支持异步代码测试...:支持promises和async/await; 自动生成静态分析结果:不仅显示测试用例执行结果,也显示语句、分支、函数等覆盖率。...Snapshot 快照测试第一次运行的时候会将被测试ui组件不同情况下的渲染结果保存一份快照文件,后面每次再运行快照测试时,都会和第一次的比较,除非执行“yarn test – -u”命令删除快照文件...我是react组件 `; exports[`react-comp snapshot test2 1`] = ` 我是react组件 `; 如果被测试代码有正常更新

2.7K20

React 组件测试技巧

测试环境页面阅读更多关于设置测试环境的细节。 在这个页面上,我们将主要使用函数组件。然而,这些测试策略并不依赖于实现细节,它对于 class 组件也同样有效。...React 提供了一个名为 act() 的助手,它确保进行任何断言之前,与这些“单元”相关的所有更新都已处理并应用于 DOM: act(() => { // 渲染组件 }); // 进行断言 这有助于使测试运行更接近真实用户使用应用程序时的体验...在这个示例,我们渲染一个组件并使用 pretty 包对渲染的 HTML 进行格式化,然后将其保存为内联快照: // hello.test.js, again import React from "react...选择性地 mock 一些子组件可以帮助减小快照的大小,并使它们代码评审中保持可读性。...例如,你可能正在使用 react-test-renderer 组件上运行快照测试,该组件内部使用子组件内部的 ReactDOM.render 渲染一些内容。

4.9K00

干货 | 携程租车React Native单元测试实践

Mock函数 单元测试,有许多对象或函数并不需要真实的引用,因此需要mock。...('InteractionManager'); 六、Jest UI快照测试 Jest提供了snapshot快照功能用于UI测试,可以创建组件的渲染快照并将其与以前保存的快照进行比较,如果两者不匹配,则测试失败...huskypackage.json的配置: "scripts": {, "test": "jest --forceExit --silent" }, "devDependencies": {...Native项目单元测试的一个简单教程,携程的持续集成流程再接入sonar, 可以查看完整的单元测试报告。...携程租车前端单元测试的实践,我们总结出几个要点: 将待测试的组件当成黑盒,不用考虑内部逻辑实现; UI改动频繁,优先保证公用组件,工具函数,核心代码的单元测试; 模拟数据尽量真实; 多考虑边界条件情况

6K30

react生态下jest单元测试

一:jest框架搭建 1.本地创建一个目录jest_practice 2.使用编辑器VScode打开目录,紧接着终端打开,执行npm init 图片 3.执行以下命令: 注意:这里我们使用cnpm...文件 图片 2.SnapShot Testing(快照测试): 快照测试第一次运行的时候会将被测试ui组件不同情况下的渲染结果保存一份快照文件。...后面每次再运行快照测试时,都会和第一次的比较,若组件代码有所改变,则快照测试会失败,如果组件代码是最新的,优化过得代码,则需要更新快照,免得每次执行报错。...更新快照命令:jest --updateSnapshot 被测组件代码如下: //被测组件 import React from 'react'; const STATUS = { HOVERED...写入或测试快照之前,将检查这些匹配器,然后将其保存到快照文件而不是接收到的值 it('will check the matchers and pass', () => { const user

2.2K20

React Native单元测试

概述 所谓单元测试,就是对每个单元进行的测试,一般针对的是函数、类或单个组件,不涉及系统和集成,单元测试是软件测试的基础测试,一个完备的软件系统都会涉及到单元测试。...相比其他的测试框架,Jest具有如下的一些特点: 适应性:Jest是模块化、可扩展和可配置的; 沙箱和快速:Jest虚拟化了JavaScript的环境,能模拟浏览器,并且并行执行; 快照测试:Jest能够对...React 树进行快照或别的序列化数值快速编写测试,提供快速更新的用户体验; 支持异步代码测试:支持promises和async/await; 自动生成静态分析结果:不仅显示测试用例执行结果,也显示语句...环境搭建 安装Jest 首先,项目目录下使用下面的命令安装Jest。...npm install --save-dev jest //或者 yarn add --dev jest 如果你使用的是react-native init命令行方式来创建的RN项目,且RN版本0.38

86620

JestReact Testing Library:前端测试的最佳实践

在你的package.json添加以下依赖:npm install --save-dev jest @testing-library/react @testing-library/jest-dom#...或yarn add --dev jest @testing-library/react @testing-library/jest-domjest.config.js配置Jest,例如:module.exports...afterEach钩子可以用于此目的:afterEach(() => { cleanup();});异步测试使用waitFor或async/await处理异步操作,确保组件测试达到期望状态:it(.../myFunction';jest.spyOn(myModule, 'myFunction');// 测试调用函数myFunction();// 检查函数是否被调用expect(myFunction...选择性运行测试使用--findRelatedTests选项只运行与更改相关的测试,以加快测试速度:npx jest --findRelatedTests使用快照测试对于不经常更改的组件,使用快照测试可以节省时间

8200

使用 Jest 进行前端单元测试

Jest 默认使用 Jasmine 语法,支持直接使用 Promise 和 async/await 进行异步测试,支持对 React 组件进行快照监控, 扩展和集成 Babel 等常用工具集也很方便。...目前 Jest 已经 Facebook 开源的 React, React Native 等前端项目中被做为标配测试框架。 下面简单介绍一些 Jest 比较有用的功能和用法。...组件的变化做监控,14.0 以后版本的 Jest 提供了 React 组件快照功能(React Tree Snapshot Testing)。...可以通过 react-test-renderer,把 React 组件生成快照并暂存下来,之后跑用例时如果组件结果发生了改变则报错提醒。 例如下面做个简单的例子: ....提示我们组件的结果和上一次保存的快照不同。这样就可以达到监控的目的。 另外如果修改了组件代码,需要更新快照,则带上参数 -u 重新运行一次即可,快照就会更新。

5.5K90

前端接入单元测试(Node+React)

node测试框架因为egg内置Mocha,因此不额外引入jestJest 被各种 React 应用推荐和使用。...组件,最开始使用Enzyme,后面从React脚手架创建的项目自带React Testing Library(RTL),官方推荐使用RTLimport React from "react";import...:第一次执行toMatchSnapshot,会将expect的结果生成一个快照修改组件保存后,第二次执行toMatchSnapshot,会再次生成快照,和上次快照对比,如果一致,则测试通过,如果不一致...,测试不通过,说明组件有改动更新快照对比结果:npm test – -u 了解测试覆盖率 Statements 语句覆盖率,它其实对应的就是js语法上的语句,js解析成ast数类型为 statement...extend, helper等模块编写单元测试,特别是controller重要的路由需要做单元测试;控制台和其他React项目可以利用jest工具,针对方法、组件、模块去做单元测试,特别是组件,可以利用快照功能避免多次修改测试用例

3.3K30

初尝 Jest 单元测试

直奔相关主题,Jest 官网有一个tab Testing React Apps, 那对React是有特别照顾呀。 Snapshot Testing 所谓snapshot,即快照也。...通常涉及UI的自动化测试,思路是把某一时刻的标准状态拍个快照测试回归的时候进行pixel to pixel的对比。...但JestReact组件快照则不同,其实是把一个组件给序列化成纯文本, 纯文本的比较,这个真是简单又高效呀。...理想状态组件若是无内部状态变化,测试用例覆盖率应该可以达到100%了。当然,仅仅是理想。...机智的facebook团队早就想到了,Using with webpack 虽然项目用的是fis构建,但是思路是可以参考的,就是给jest加个解析路径的配置,package.json添加jest项配置

1.8K80

web前端好帮手 - Jest单元测试工具

.toMatchSnapshot()默认按顺序来命名快照实际测试过程,这样的命名不可读,也让人很难推测出具体是哪句测试代码出问题,造成维护困难。...所以推荐大家用.toMatchSnapshot([快照名称])给快照设置命名,差异对比就能一眼看出是哪句测试代码出问题了,也不会有维护的问题。 React组件如何覆盖测试?...首先安装react-test-renderer库,该库支持将React组件渲染为纯JS对象: npm install -D react-test-renderer 举个简单的例子: const renderer...= require("react-test-renderer"); test("测试React组件渲染", () => { let renderInstance = renderer.create(...渲染和服务端渲染类似,渲染只会执行一次,即使渲染过程触发数据状态变动,也不会再次进行渲染,所以我们一开始要先处理store状态,再渲染React组件

4.9K40

如何自动化测试 React Native 项目 (下篇) - 单元测试

接着上篇的内容, 这篇文章会详细的介绍 Glow 我们如何写单元测试, 以及 React Native 各个模块单元测试的详细实现方式。...单元测试实践 组件UI测试 (Snapshot) 传统的 Snapshot 测试一般是渲染一个UI组件 -> 截取屏幕快照 -> 和之前的屏幕快照对比。...当 snapshot 结果需要升级更新时, 只需要执行 jest -u 指令即可更新之前生成的 snapshot 结果。 为什么 Snapshot React 测试是可靠的呢?... React(以及 React Native ) 的开发理念, 开发者把重点放在描述要显示组件不同输入时的静态状态,然后交给React去处理UI的更新。...Views)显示时需要的简单的Prop Component 要改变 App state 的时候, dispatch 一个 action 到 Action handler (react-thunk),

3.2K21

初尝 Jest 单元测试

直奔相关主题,Jest 官网有一个tab Testing React Apps, 那对React是有特别照顾呀。 Snapshot Testing 所谓snapshot,即快照也。...通常涉及UI的自动化测试,思路是把某一时刻的标准状态拍个快照测试回归的时候进行pixel to pixel的对比。...但JestReact组件快照则不同,其实是把一个组件给序列化成纯文本, 纯文本的比较,这个真是简单又高效呀。...理想状态组件若是无内部状态变化,测试用例覆盖率应该可以达到100%了。当然,仅仅是理想。...机智的facebook团队早就想到了,Using with webpack 虽然项目用的是fis构建,但是思路是可以参考的,就是给jest加个解析路径的配置,package.json添加jest项配置

1.6K10

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

除非合并,否则将覆盖DOM测试库的默认设置。 基本上,这个函数所做的就是使用ReactDOM呈现组件直接附加到document.body的新创建的div呈现(或为服务器端呈现提供水合物)。...1.如何创建测试快照 快照,顾名思义,允许我们保存给定组件快照。当您进行更新或重构,并希望获取或比较更改时,它会提供很多帮助。 现在,让我们看一下 App.js 文件的快照。...接下来,我们可以使用 render 呈现App组件,并从方法获取 asFragment 作为返回值。最后,确保App组件的片段与快照匹配。...App.js 做出更改,测试将失败,因为快照将不再匹配。...对于第一个测试,我们只检查加载消息没有数据要显示时是否显示。 也就是说,我们现在已经完成了八个简单的步骤来测试你的React应用程序。

14.8K33

单元测试

jest-location-mock 用于 Jest 测试模拟浏览器window.location对象的库。...对于层级较深的组件,需单测文件增加注释,说明测试组件所在的路径 运行单测 单测执行 安装 VSCode Jest 运行插件 名称: Jest Runner ID: firsttris.vscode-jest-runner...UI快照 应避免UI快照过大,不要无脑地记录整个组件快照,特别是有别的 UI 组件参与其中的时候(比如antd多层级组件,将会使快照文件过于庞大,另外快照杂揉了 antd 的 DOM 结构后,快照变得非常难读...act } from '@testing-library/react'; act 是一个用于处理 React 组件的异步更新和副作用的工具函数,它的主要作用是确保测试中正确地触发和等待组件更新。...act 的使用场景如下: 当你测试中进行与 React 组件的交互(例如模拟用户点击、输入等)时,可以使用 act 来确保组件更新后进行正确的断言。

18510

实战 | 初尝 Jest 单元测试

直奔相关主题,Jest 官网有一个tab Testing React Apps, 那对React是有特别照顾呀。 Snapshot Testing 所谓snapshot,即快照也。...但JestReact组件快照则不同,其实是把一个组件给序列化成纯文本, 纯文本的比较,这个真是简单又高效呀。...理想状态组件若是无内部状态变化,测试用例覆盖率应该可以达到100%了。当然,仅仅是理想。...先跑跑官网的简单例子,先照步骤安装npm依赖,然后敲代码,jest跑一下: 第一次跑的时候,就会生成一个快照文件,__snapshots__目录下: 之后的toMatchSnapshot()调用就会与之比较...机智的facebook团队早就想到了,Using with webpack 虽然项目用的是fis构建,但是思路是可以参考的,就是给jest加个解析路径的配置,package.json添加jest项配置

88910
领券