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

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

本篇教程是 JavaScript 测试系列实战 第一篇教程,首先介绍了测试类型,然后主要通过一个 React 项目教会你如何使用 Jest 编写第一个测试,然后使用 EnzymeReact 组件进行浅层渲染...初识 Enzyme:编写第一个 React 组件测试 很显然,我们不会仅仅满足于测试像 divide 那样简单函数,我们希望能够测试一个 React 组件,但是一个普通 JavaScript...配置 jest-enzyme 你应该还记得,在刚才测试代码中,我们还是使用Jest 自带 Matcher(toEqual)。...我们将在下一篇教程中讲解如何去更“深层”地去测试我们组件。...小结 在过去两个小节中,我们了解、安装配置了 Enzyme,并且接触了 shallow 浅层渲染这个单元测试利器,并且循序渐进测试了两个 React 组件

2.9K10

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

严重时候甚至会出现我改了一行代码,却不清楚其影响范围情况。这种时候,就需要测试方式,来保障我们应用质量稳定性了。 接下来,让我们学习下,如何React 应用写单元测试吧?...除非合并,否则将覆盖DOM测试库中默认设置。 基本上,这个函数所做就是使用ReactDOM呈现组件。在直接附加到document.body新创建div中呈现(或为服务器端呈现提供水合物)。...触发事件通常会触发应用程序中一些更改,因此我们必须执行一些断言来确保这些更改发生。在我们测试中,这样做一个好方法是确保呈现给用户计数已经更改。...(CV也是可以?) 1.如何创建测试快照 快照,顾名思义,允许我们保存给定组件快照。当您进行更新或重构,并希望获取或比较更改时,它会提供很多帮助。 现在,让我们看一下 App.js 文件快照。...这里,我们创建了自己助手函数 renderWithRedux() 来呈现组件,因为它将被多次使用。 renderWithRedux() 作为参数接收要呈现组件、初始状态存储。

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

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

在上一篇教程中,我们已经介绍了使用 Enzyme 测试 React 组件基本知识。...今天,我们将更深入地挖掘并学习如何测试组件 Props,如何(以及为什么)使用 mount 函数,以及什么是 Jest 快照测试。...:组件 Task 将根本不会渲染,因此就无法判断是否渲染出正确内容。...通常我们会在集成测试使用 mount 函数,测试组件之间如何协同工作,而不仅仅是作为独立单元。 如果你不了解单元测试集成测试这两个术语,可以看下本系列第一篇教程。...- END - ● JavaScript 测试系列实战(一):使用 Jest Enzyme 测试 React 组件● 你不知道 Npm(Node.js 进阶必备好文)● 用动画实战打开 React

2.1K20

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

一、技术选型: Jest + Enzyme + react-hooks-testing-library 1.1 jest Jest是FaceBook出品前端测试框架,适合用于ReactReact...1.2 Enzyme Enzyme是AirBnb开源React测试工具库,通过一套简洁api,可以渲染一个或多个组件,查找元素,模拟元素交互(如点击,触摸),通过Jest相互配合可以提供完整...组件测试 import { mount, shallow, render } from ‘enzyme'; Enzyme测试组件进行渲染分为三种: shallow:浅渲染,仅渲染单个组件,不包括其组件...因为渲染了真实DOM节点,可以用来测试DOM API交互组件生命周期。 render:静态渲染,渲染为静态HTML字符串,包括组件,不能访问生命周期,不能模拟交互。..._onClear).toBeCalled();//测试组件实例上方法是否被调用 九、Redux测试使用React或者React Native时通常会使用Redux进行状态管理,需要mock store

6K30

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

JavaScript测试教程-part 1:用 Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme测试 React 组件 3....JavaScript测试教程–part 4:模拟 API 调用模拟 React 组件交互 在上一篇教程中,我介绍了使用 Enzyme 测试 React 组件基础知识。...今天,将进行更深入研究,并学习如何测试 props,如何(以及为什么)使用 mount 函数以及什么是快照测试。开始吧! 测试 props 在上一篇文章中,我们测试了通过一些 props 结果。...在这种情况下子组件将根本不会被渲染。所以上面的测试失败了,你需要了解“浅渲染”局限性。 Mount 模拟了 DOM 实现,而 Jest 默认使用 jsdom。...正是由于这个事实,使用 mount 函数能够测试这些组件是否可以协同工作,而不仅仅是单独单元测试。 要弄清楚单元测试集成测试区别,请参见本教程第一部分。

1.7K20

从echarts-for-react源码中学习如何写单元测试

前言 如果你熟悉ReactEcharts的话,应该有用到过 echarts-for-react(虽然它现在没有维护了),本文就通过它写测试用例来学习下如何写单元测试 如何测试function 有如下函数...测试用例 import React from 'react'; //enzyme库用来判断、操纵遍历 ReactComponents import {mount} from 'enzyme'; import...浅渲染,将组件渲染成虚拟DOM对象,它不会渲染内部组件,也无法与组件互动 [3] render()用于将React组件渲染成静态HTML并分析生成HTML结构 ③ toEqual()toBe.../enzyme/docs/api/mount.html 通过本文,你应该知道 ① jest.useFakeTimers()作用及何时使用如何测试function ③ 如何测试ReactComponent...④ mount()/shallow()/render()区别 ⑤ toEqual()toBe()区别 ⑥ 如何测试DOM节点上属性 ⑦ 如何测试React组件实例上属性 ⑧ 如何测试组件

6.1K50

JavaScript 测试系列实战(三):使用 Mock 模拟模块并处理组件交互

在之前两篇教程中,我们学会了如何测试最简单 React 组件。在实际开发中,我们组件经常需要从外部 API 获取数据,并且组件交互逻辑也往往更复杂。...在这篇教程中,我们将学习如何测试更复杂组件,包括用 Mock 去编写涉及外部 API 测试,以及通过 Enzyme 来轻松模拟组件交互 初次尝试 Jest Mock 我们应用程序通常需要从外部...我们测试第一件事是检查修改输入值是否更改了我们状态: 我们修改 app/components/TodoList.test.js 如下: import React from 'react'; import...不幸是,测试钩子并没有那么简单。在本文中,我们研究了如何使用 react-hooks-testing-library[2] 处理它。...这就是我们使用 react-hooks-testing-library[4] 原因,我们将在下一篇教程里讲解如何更加舒适测试 React Hooks 方法,敬请期待!

4.8K20

JavaScript测试教程-part 2:引入 Enzyme测试 React 组件

JavaScript测试教程–part 4:模拟 API 调用模拟 React 组件交互 在本教程第一篇中,我们简要介绍了单元测试基础。这次要更进一步,使用 Enzyme测试 React。...这样可以使你程序将更加可靠,并且更加容易避免回归。我们在这里用了 Jest,不过 Enzyme 也可以与 Mocha Chai 之类库一起使用。...Enzyme 基础 Enzyme 是一个库,用于在测试时处理你 React 组件。它由 Airbnb 开发。 设置 Enzyme 继续上一篇文章内容,假设你 Jest 已经能够工作了。...总结 本文中我们已经了解了使用 Enzyme 测试 React 组件基本知识。我们已经介绍了安装 Enzyme 并运行第一个简单测试使用渲染类型称为“浅渲染”。...之所以这样称呼,是因为它不渲染任何组件。在编写单元测试时,它工作得很好。在本教程后续部分中,我将介绍其他类型渲染,并学习如何测试程序不同部分。它将包括快照测试模拟数据之类技术。下次见!

1.4K50

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

JavaScript测试教程-part 1:用 Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme测试 React 组件 3....JavaScript测试教程–part 4:模拟 API 调用模拟 React 组件交互 今天,我们进一步测试 React 组件。它涉及模拟组件交互模拟 API 调用。你将学到两种方法,开始吧!...('axios'),Jest测试组件中都用我们模拟代替了 axios。...有关其功能完整列表,请阅读文档。我们测试检查组件在渲染运行之后是否从模拟中调用 get函数,并成功执行。...JavaScript测试教程-part 1:用 Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme测试 React 组件 3.

3.7K10

React 测试驱动开发:从用户故事到产品

同时,我们将在 TDD 中使用 Jest Enzyme 。...一旦完成本教程,你将能够: 基于需求创建 epic user stories(用户故事) 基于用户故事创建测试 使用 TDD 开发一个 React 应用 使用 Enzyme Jest 测试 React...应用 使用/复用 CSS variables 实现响应式设计 创建一个根据所提供 props 实现不同渲染功能可复用 React 组件 使用 React PropTypes 实现组件 props...《对 React 组件进行单元测试》 《更可靠 React 组件:从"可测试"到"测试通过"》 《如何测试 React Hooks ?》...计时器 所以,这就是我们如何使用 TDD 开发一个基础 React 应用过程。用户故事及验收准则越细致,测试用例也将越精确,那将是大有裨益

3.2K30

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

Jest 是一款轻量 JavaScript 测试框架,它卖点是简单好用,由 facebook 出品。本文就简单讲讲如何使用 JestReact 组件进行测试。 为什么需要单元测试?...单元测试(Unit Testing),指的是对程序中模块(最小单位)进行检查验证。比如一个函数、一个类、一个组件,它们都是模块。 使用单元测试优点: 更好地交付高质量代码。...但 Jest 本身并不支持 React 组件测试 API,需要使用另外一个内置 React Testing Library 库来测试 React 组件。...React Testing Library 是 以用户为角度 测试库,能够模拟浏览器 DOM,将 React 组件挂载上去后,我们使用其提供一些模拟用户操作 API 进行测试。...官方只支持到 React 16,Enzyme 已死: https://dev.to/wojtekmaj/enzyme-is-dead-now-what-ekl 使用 Jest 测试 React 组件

2.8K20

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

这种方法特点是只 render 当前组件中一层深元素, 不会去渲染当前组件中用到组件。 这就保证了测当前组件时候, 不会受到组件行为影响。符合分层测试需求;并且也比较快速。...需要渲染更深层次组件时也可以用 enzyme 提供dive方法来实现。...Jest Snapshot Test特点: Jest 使用一个 test renderer 来生成出 React tree 序列化结构树。...Jest snapshot 测试不仅可以对比React tree结构区别, 也可以对比其他可序列化区别。 比如对比Redux某个状态state是否之前相同。...可以想象成每次UI有变化时会重新生成这个组件并刷新, React会帮开发者处理具体怎么高效变化。 因此我们在测试组件时候, 也只要把重点放在测试我们如何描述这个组件

3.2K21

使用storybook管理React组件

本文已ReactUI组件为例,演示如何新建/集成Storybook到项目中,并对UI组件进行全方位管理,包括发布、demo文档、测试等。 1....测试UI组件 4.1 写测试用例原因 找到bug 新修改没有改变已有的接口功能 将测试用例作为文档 4.2 测试结构 使用storyshots插件来实现,其核心是使用Jest,原理是每次生成一份DOM...4.3 测试交互 storybook交互性测试可以使用 Enzyme来模拟用户输入,然后使用Mocha or Jest来进行结果测试,storybook又一个专门插件帮助我们集成他们:specifications...,通过断言来测试UI组件属性,更多使用方法可以参考specifications插件使用。...4.4 测试样式 样式测试这里采用Puppeteer Jest来实现,其原理是利用Puppeteer无头chrome浏览器storybookurl绑定组件特点,来渲染不同UI组件,再进行图片快照对比

3.3K20

React总结(三)】React 组件自动化测试与持续集成指北(1)

导语 本文主要介绍基于 React 框架项目,在对自己封装组件或者是通过 HOC , render props 方式在第三方 UI 组件库(e.g....enzyme: EnzymeReact JavaScript 测试实用程序,可以更轻松地测试 React Components 输出。...下面来聊一下如何测试用例,我总结分为两个方法: Snapshot 快照测试 组件业务逻辑测试 建议阅读下面内容之前,先了解一下 Enzyme 基本 api: https://github.com/airbnb...⚙️如何测试组件逻辑 1、创建一个 snapshot 一个需要被测试组件往往只需要创建一个 snapchat,具体使用方法可以像上面的说明一样操作,没必要创建多个 snapshot。...3、模拟事件触发来测试组件 通过 snapshot 测试 props 测试,已经能确保组件是可以正常渲染了,但是这还远远不够,因为有很多分支代码我们是没有覆盖到,如果你查看 jest --coverage

2.3K80

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

Augular 默认测试框架就是 Karma + Jasmine,而 React 默认测试框架是 Jest. Jest 被各种 React 应用推荐使用。...React Testing Library Enzyme 都是基于 ReactTestUtils Test Render,封装了更简洁易用 API。...Enzyme 是从代码实现角度出发进行测试基于 state props,而 React Testing Library 是从用户体验角度出发,所以是基于 dom 进行测试。...、afterEach),减少测试代码数量,避免无用功能 测试、功能开发相结合,有利于设计代码重构 编写说明 未来项目都是基于 Talos 生成,其实也就是使用了 Create-React-App...e2e,并与 src 同放在根目录下 VScode WebStorm 都有对应 Jest 插件,安装后书写代码时有代码补全,debug 自动运行等功能 如何编写测试 其实,Jest 语法蛮简单

5.3K30

「前端架构」Grab前端学习指南

当用户导航到另一个URL时,需要刷新整个页面,服务器为新页面发送新HTML。这称为服务器端呈现。 但是在现代SPAs中,使用是客户端呈现。...对于相同道具状态,会产生相同视图。纯函数易于测试,功能组件也是如此。在React中进行测试很容易,因为组件接口定义良好,可以通过向组件提供不同道具状态并比较呈现输出来测试组件。...测试- - Jest + Enzyme Jest是Facebook一个测试库,旨在让测试过程无痛苦。与Facebook项目一样,它提供了一种开箱即用良好开发体验。...Jest酶使编写前端测试变得有趣容易。因为定义了明确职责接口,所以React组件Redux操作/缩减器相对容易测试也很有帮助。...Jestase文档非常简洁,通过阅读它们应该就足够了。 预计持续时间:2-3天。尝试为你React + Redux应用程序编写Jest +Enzyme!

7.4K20

前端自动化测试

前言 本文主要是介绍基于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: 定义一个测试...mockReturnValue: mock函数被调用返回一个值 EnzymeAPI更多着重于渲染react组件从dom树种检索指定节点 下面是三种渲染组件方法: shallow: 会渲染至虚拟

1.9K20

年轻时,我不写单元测试

如果你已经有了答案,欢迎下方指正) 基于此,笔者希望在前端编写测试用例能够实现以下目标: 先保证一个一个模块基础功能正常 增加新功能时,原有功能不受影响 本着实现以上要求,笔者下来介绍下具体使用...重点将展开以下两种react组件类型测试。 展示型组件测试 展示型组件测试,意思就是要确保每一次修改都是符合预期,这里笔者要着重介绍下jest框架里面的snapshot功能。...shapshot就是会对组件进行一次快照记录当前状态,每一次run jest时候,对比上一次,看看是否有变化。...但是仔细想想,这其实就违背了我们单元测试初衷,笔者这里也大胆猜测下,jest官方在实现这个功能时候,应该也只是想记录下一步一步事件后,当前组件html结构,对比上一次快照,来看功能是否符合预期...一开始我觉得单元测试很鸡肋原因也是没有深入了解它,这次发现就算是业务结合很紧密组件,也能够模拟正常操作,这里就贴一个redux结合组件来举例 import React from 'react

85420

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

我希望通过对这些工具各自作用掌握,了解完整前端测试技术方案。前端单元测试领域也很多,这里主要讲对于前端组件如何进行单元测试,最后会主要介绍下对于 React 组件一些测试方法总结。...,而且支持功能更加清晰,不用考虑如何组合使用问题,而且下文介绍 jest 测试框架也是使用这种风格。...使用 Jest + EnzymeReact 进行单元测试 ?...render 使用 react-dom-server 渲染成 html 字符串,基于这份静态文档进行操作,对应操作对象为 CheerioWrapper。...另外测试 React组件除了 Enzyme 提供操作, Jest 中还有很多其他有用特性,比如可以 mock 一个 npm 组件实现,调整 setTimeout 时钟等,真正进行单元测试时,这些工具也是必不可少

9.5K20

【译】使用EnzymeReact Testing Library测试React Hooks

确保代码没有bug一种方法就是编写测试用例。测试React hooks与测试一般程序方式没有太大区别。 在本教程中,我们将了解如何通过使用带有hooksto-do应用程序来实现这一点。...我们将介绍使用EnzymeReact Testing Library编写测试,这两个库都能做到这一点。...如果你第一次使用Enzyme,我们之前发布过关于它文章,《Enzyme如何React应用中与Jest一起使用》。我们可以用他们来深入测试React Hooks。...浅渲染允许我们检查组件渲染方法是否被调用——这是我们想要确认,因为这里我们需要证明组件渲染。...加油写面向对象React代码! React钩子应用中其他钩子一样容易出错,你要确保你能很好地使用它们。正如我们刚才看到,有几种方法可以做到这一点。

4K30
领券