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

那些年错过React组件单元测试(上)

然后我翻阅了大量文档,发现基于dva单元测试文档比较少,因此在有了一番实践之后,我梳理了几篇文章,希望对于想使用 Jest 进行 React + Dva + Antd 单元测试你能有所帮助。...前端自动化测试产生背景 在开始介绍jest之前,我想有必要简单阐述一下关于前端单元测试一些基础信息。 为什么要进行测试?...技术方案 针对项目本身使用React + Dva + Antd技术栈,单元测试我们Jest + Enzyme结合方式。...在开源社区有超高人气,同时也获得了React官方推荐。 ? Jest 本篇文章我们着重来介绍一下Jest,也是我们整个React单元测试根基。 环境搭建 安装 安装JestEnzyme。...钩子函数 类似于 react 或者 vue 生命周期,一共有四种: beforeAll():所有测试用例执行之前执行方法 afterAll():所有测试用例跑完以后执行方法 beforeEach(

4.9K20

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

,一般用于异步测试 四、Jest 周期函数 在写测试用例之前,可以四个周期函数进行一些处理: beforeAll(() => { console.log('所有测试用例测试之前运行'); });...afterAll(() => { console.log('所有测试用例测试完毕后运行'); }); beforeEach(() =>{ console.log('每个测试用例测试之前运行'...七、Jest 异步测试 Jest单元测试是同步,因此面对异步操作如fetch获取数据,需要进行异步模拟测试。...render } from ‘enzyme'; Enzyme测试组件进行渲染分为三种: shallow:浅渲染,仅渲染单个组件,不包括其子组件。...在携程租车前端单元测试实践中,我们总结出几个要点: 将待测试组件当成黑盒,不用考虑内部逻辑实现; UI改动频繁,优先保证公用组件,工具函数,核心代码单元测试; 模拟数据尽量真实; 多考虑边界条件情况

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

React 组件进行单元测试

作为一种经典开发和重构手段,单元测试在软件开发领域被广泛认可和采用;前端领域也逐渐积累起了丰富测试框架和最佳实践。 本文将按如下顺序进行说明: I. 单元测试简介 II....React 单元测试中用到工具 III. 测试驱动 React 组件重构 IV. React 单元测试常见案例 I....单元测试是在软件开发过程中要进行最低级别的测试活动,软件独立单元将在与程序其他部分相隔离情况下进行测试。 测试框架 测试框架作用是提供一些方便语法来描述测试用例,以及进行分组。...四个基础单词 编写单元测试语法通常非常简单;对于jest来说,由于其内部使用了 Jasmine 2 来进行测试,故其例语法与 Jasmine 相同。...React 单元测试常见案例 预处理或后处理 可以beforeEach和afterEach做一些统一预置和善后工作,在每个之前和之后都会自动调用: describe('test components

4.2K40

JavaScript 测试系列实战(一):使用 JestEnzyme 测试 React 组件

本篇教程是 JavaScript 测试系列实战 第一篇教程,首先介绍了测试类型,然后主要通过一个 React 项目教会你如何使用 Jest 编写第一个测试,然后使用 Enzyme React 组件进行浅层渲染...在这一系列教程中,我们将会从零开始,一步步带你熟悉从单元测试到端到端测试方方面面。我们将会在一个 React 项目中实践所学到自动化测试技术。...因此这里建议直接使用 npx jest 执行测试。 编写第一组测试 每个测试文件通常有多个测试用例。Jest 允许我们通过 describe 函数测试用例进行分组,它创建了一个可以组合多个测试块。...这样测试进行分组可以使我们代码更加清晰。在关注应用程序代码质量同时,我们也应该确保测试代码质量,这样我们才有足够动力不断去维护测试代码,从而确保我们项目能够保持健壮。...Jest 测试文件中使用它。

2.9K10

Jest:给你 React 项目加上单元测试

Jest 是一款轻量 JavaScript 测试框架,它卖点是简单好用,由 facebook 出品。本文就简单讲讲如何使用 Jest React 组件进行测试。 为什么需要单元测试?...单元测试(Unit Testing),指的是程序中模块(最小单位)进行检查和验证。比如一个函数、一个类、一个组件,它们都是模块。 使用单元测试优点: 更好地交付高质量代码。...可以通过设置 Jest 配置文件 testMatch 或 testRegex 选项进行修改,或者 package.json 下 "jest" 属性。...beforeEach,在当前文件每个 test 执行前都调用一次。 afterAll,在当前文件所有测试结束后执行一次,适合做一些收尾工作,比如将数据库清空。...yarn create react-app jest-app --template typescript 执行单元测试命令为: yarn test CreateReactApp 内置了 Jest

2.8K20

前端自动化测试

前言 本文主要是介绍基于React+Ant Design(以下Antd表示Ant Design)项目,在对于自己封装,或者基于Antd封装公共组件自动化测试技术选型和实践。...React项目测试选型 react-addons-test-utils:官方API,有些晦涩 Enzyme:源自Airbnb,封装了React官方测试API,类Jquery风格简洁API, 使得Dom...操作变得十分友好 综合目前市面上轮子,我们技术选型为Jest+Enzyme 实践 例子是一个基于Antd二次封装单选年日期选择器,如下演示: 图片 代码结构如下 图片 其中测试相关文件,...这里可以首先简单看一下,Jest+Enzyme基本语法: JestAPI更多着力于定义测试、断言、mock库 定义测试: describe: 定义一个测试套件(test suite) it: 定义一个测试...(test) beforeEach: 定义一个回调函数在每个测试之前执行 expect: 执行一个断言 jest.fn(): 创造一个mock函数 一些用于断言方法: toEqual: 验证两个值是否相同

1.9K20

年轻时,我不写单元测试

其实之前就已经简单了解过了单元测试,但当时对于单元测试我是持有一种很否定态度,因为他太过于鸡肋,都是测试一些很基础功能,但是当笔者被这次重构折磨之后,有重新思考了下如何能够保证代码健壮性,抱着这个态度...shapshot就是会对组件进行一次快照记录当前状态,每一次run jest时候,对比上一次,看看是否有变化。...,能够确保每一个修改之后,跑完单元测试,能够确定之前功能正常。...一开始我觉得单元测试很鸡肋原因也是没有深入了解它,这次发现就算是和业务结合很紧密组件,也能够模拟正常操作,这里就贴一个和redux结合组件来举例 import React from 'react...更新一个bug fix,在高阶组件下,我们需要调用wrapper.update(); 这里是issue 更新一个jest全局变量

85120

写代码无BUG,网易云前端单元测试方案总结

我希望通过这些工具各自作用掌握,了解完整前端测试技术方案。前端单元测试领域也很多,这里主要讲对于前端组件如何进行单元测试,最后会主要介绍下对于 React 组件一些测试方法总结。...虽然 Jest 提供了很丰富功能,但是并没有内置 ES6 支持,所以依然需要根据不同运行时代码进行转换,由于 Jest 主要运行在 Node 中,所以需要使用 babel-jest 将 ES Module...使用 Jest + Enzyme React 进行单元测试 ?...enzyme Enzyme基础配置如下: npm install enzyme enzyme-adapter-react-16 jest-enzyme jest-environment-enzyme jest-canvas-mock...另外测试 React组件除了 Enzyme 提供操作, Jest 中还有很多其他有用特性,比如可以 mock 一个 npm 组件实现,调整 setTimeout 时钟等,真正进行单元测试时,这些工具也是必不可少

9.5K20

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

单元测试工具 - Jest & Enzyme Jest - Facebook Jest 是 Facebook 开源 Javascript 测试框架,提供了许多好用 API,先介绍下主要优点: 自带...单元测试实践 组件UI测试 (Snapshot) 传统 Snapshot 测试一般是渲染一个UI组件 -> 截取屏幕快照 -> 和之前屏幕快照对比。...Jest snapshot 测试不仅可以对比React tree结构区别, 也可以对比其他可序列化区别。 比如对比Redux某个状态state是否和之前相同。...组件交互测试 Enzyme shallow 生成 ReactWrapper 会提供一些用来进行组件交互测试 API,比如 find(), parents(), children()等选择器进行元素查找...提供API或者 snapshot 进行测试。

3.2K21

JavaScript 测试教程 part 1: Jest 进行单元测试

本文是 JavaScript 测试教程 系列中第1部分 1. JavaScript测试教程-part 1: Jest 进行单元测试 2....他们将模拟滚动,单击和键入之类行为,并从实际用户角度检查我们程序是否运行良好。 Jest 进行单元测试 Jest 是 Facebook 开发测试框架。...稍后我们将学习如何在 React 中使Jest 首先,让我们创建一些可以测试简单函数。...分组测试 每个文件通常会有一个以上测试。使用 Jest,你可以使用 describe 函数它们进行分组。它创建了一个可以合并多个测试块。...它是常用别名。运行 it === test 会返回 true。 像这样测试进行分组可以使代码更整洁。你应该关心程序代码和进行测试代码质量。

2.8K20

前端测试体系建设与最佳实践总结

单元测试:是指软件中最小可测试单元进行检查和验证,通常指的是独立测试单个函数。 UI 测试:是图形交互界面的测试。 集成测试:就是测试应用中不同模块如何集成,如何一起工作,这和它名字一致。...Enzyme 是从代码实现角度出发进行测试,基于 state 和 props,而 React Testing Library 是从用户体验角度出发,所以是基于 dom 进行测试。...它也可能有更好开发体验,以及更稳定测试。这种方法使重构变得轻而易举,同时也可以实现可访问性最佳实践。...Redux 单元测试 测试 Reducer Reducer 把 action 合并到之前 state,并返回新 state。...只有单元测试和 UI 测试会计算到测试覆盖率,而 e2e 不会被计算进去。e2e 不需要写太多,因为大部分关键逻辑已经被单元测试覆盖,e2e 只需要简单进行主流程模拟。

5.3K30

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

在编写单元测试时候,一定会对之前代码反复进行调整,虽然过程比较痛苦,可组件质量,也在一点一点提高。...技术栈选择 当我们想要为 React 应用编写单元测试时候,官方推荐是使用 React Testing Library[1] + Jest[2] 方式。...更加符合我们对于单元测试原本诉求,以及最佳实践。 可遵循简单规则 也许上文中使React Testing Library 编写单元测试示例,还会给人一种一头雾水感觉。...3.测试事件 在编写单元测试之前,让我们首先看下 TestEvents.js 是什么样子。...结语 React Testing Library 是用于测试 React 应用一大利器。它为我们提供了访问 jest-dom 匹配器机会,以及最佳实践,使得我们可以使用它来更有效地测试我们组件。

14.8K33

JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互

JavaScript测试教程-part 1: Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme 并测试 React 组件 3....(例如 fs 或 path ),则需要在模拟文件中明确调用 jest.mock('moduleName') Jest 允许我们函数进行监视:接下来测试是否调用了我们所创建 get 函数。...一个窍门是它是附加到 window 对象全局函数并进行模拟,可以将其附加到 global 对象。首先,让我们创建模拟 fetch 函数。...组件交互 在之前文章中,我们提到了阅读组件状态或属性,但这是在实际与之交互时。...JavaScript测试教程-part 1: Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme 并测试 React 组件 3.

3.7K10

Unit Testing

前言 Jest 是 Facebook 推出一种 Unit Testing 工具,当然还有很多其他类似的单元测试库,比如 mocha ava 等等 写单元测试可以帮助你提升开发效率以及代码质量,并项目的维护有莫大帮助...'] } /__mocks__/enzymeMock.js 文件代码 import Enzyme from 'enzyme' import Adapter from 'enzyme-adapter-react...-16' Enzyme.configure({ adapter: new Adapter() }) 其他配置可以参考官网配置文档来进行进一步配置 #如何做好单元测试 #一个好单元测试应该遵循下面三个步骤...那么一定是你出了问题 快速回归 -> 当我们在开发业务时候,例如在原有功能上添加新功能,那么新开发功能不会影响之前业务逻辑,如果测试代码出了问题,那么一定是你问题 #测试覆盖率 在真实项目开发当中...在表格中 ✅ ,建议是在 100% 覆盖率 #参考 Jest React 测试技巧 React 单元测试策略及落地 单元测试-维基百科

1.3K20

jest 单元测试改善老旧 Backbone.js 项目

对于这样既有项目,在之前文章中也进行过分析,常常面临依赖不清、封装混乱,以及缺乏测试等问题;进行维护和新需求开发时,结合其本身特点,在 TDD 方式下进行渐进改善,而非推倒重来,无疑是个可行办法...通常 Backbone 项目也可以忽略文中涉及 react 部分。 升级测试框架 和之前文章中例子相同,本次依然采用 Jest 作为测试框架。...原有用例 早期项目中其实是有一些单元测试代码,主要是 Jasmine 部分 model/collection 进行了测试。...单元测试并不严谨,依赖了提供 mock 数据 php 服务器环境 三是由于视图层没有很好组件化,从而缺乏对视图组件测试 jest for Backbone 实践 jest 是比较新测试框架...根据目标项目的情况采用了 enzyme-adapter-react-13 做适配 cross-env 设置环境变量 test,从而配置出适用于 jest .babelrc 文件,且不影响生产环境

3.4K10

原创干货:前端单元测试Jest零基础入门教学

文件(必须是tsx结尾,因为要测试React组件) 一个合格React项目,组件必须是tsx结尾,工具文件以ts结尾,声明文件以.d.ts结尾 首先引入enzymeReact以及对应组件 import...对象要进行比较,使用toEqual yarn test 测试结果通过,这就是一个最简单单元测试编写,通常推荐根据需求先编写单元测试代码,再进行业务代码编写 然后生成单元测试报告 yarn test-c...其实像Jest用起来还是比较方便,核心理念就是使用测试框架运行业务代码,再用单元测试代码去检测你业务代码,前后端单元测试理念其实都是一样思想,检测代码运行结果嘛。...其他API这里就不做解释了,有兴趣可以ykj-cli这个脚手架试验一把,上面的例子都在里面,非常方便 ---- 前端单元测试还有一个很重要一点,就是生成页面快照 为什么要生成页面快照?...然后等部分代码跑完后,再生成一次快照,跟之前快照进行对比,这样就能判断你中间这部分代码有没有影响UI,这样能确定有没有BUG出现 ---- 页面快照: import App from '..

1.1K20

使用Enzyme测试React(Native)组件|洞见

组件化与UI测试 在组件化出现之前,我们不谈UI单元测试,哪怕是对于UI页面进行测试都是一件非常困难事情。...其实组件化并不完全是为了复用,很多情况下也恰恰是为了分治,使得我们可以分组UI页面进行开发,然后分别对其进行单元测试。...特别是当浏览器中Web应用越来越庞大时候,与在后端将大型单体应用拆分成微服务架构最佳实践一样,前端应用也可以被拆分成不同页面和特性。 ?...(图片来自:http://t.cn/R6UgwrH) 每个特性由一个单独团队从端到端其负责,它允许团队规模化地交付那些能够独立部署和维护服务,在2016年11月期技术雷达当中这种方式被称之为微前端...推荐在测试环境中使react-native-mock这个辅助库,这是一个使用纯JavaScript将全部React Native组件进行mock第三方库,只需要导入这个库就可以对React Native

2.3K40

【Web技术】639- Web前端单元测试到底要怎么写?

设计模式与结构分析 在这个场景设计开发中,我们严格遵守 redux 单向数据流 与 react-redux 最佳实践,并采用 redux-saga 来处理业务流, reselect 来处理状态缓存,通过...单元测试部分介绍 先讲一下用到了哪些测试框架和工具,主要内容包括: jest ,测试框架 enzyme ,专测 react ui 层 sinon ,具有独立 fakes、spies、stubs、mocks...这就是写测试用例基本套路。 我们在写测试用例时尽量保持单一职责,不要覆盖太多不同业务范围。测试用例数量可以有很多个,但每个都不应该很复杂。...接着就是测试自己封装 fetch 工具库了,这里 fetch 我是 isomorphic-fetch ,所以选择了 nock 来模拟 Server 进行测试,主要是测试正常访问返回结果和模拟服务器异常等...,这里使用了 redux-mock-store 来模拟 redux store : import React from 'react'; import { shallow } from 'enzyme

3K30

Sentry 前端测试实践:从 Enzyme 迁移到 RTL

执行 Enzyme 测试通常需要很长时间,特别是如果你忘记在测试案例之间进行手动清理。上图是单个组件 Jest 测试结果。由于每个测试案例执行后缺少清理操作,每个测试执行时间都会变长。...然而,从长远来看,这个解决方案也不行,因为 React 18 会进行全面重写,而且考虑到 Airbnb 已经放弃 Enzyme 支持,这个解决方案是不会长久。...Dodds 所写文章“使用 RTL 时要避免常见错误”启发,我们写了一个类似的最佳实践文档,可以持续记录我们试图遵循最佳实践。...前端 TSC 成员还留出时间进行每日代码评审,这对于帮助那些希望按照最佳实践学习如何使用 RTL 的人来说是至关重要。 3....与之前迁移一样,我们没有使用任何可以阻止人们 Enzyme 编写新测试工具。

57610
领券