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

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

本篇教程是 JavaScript 测试系列实战 的第一篇教程,首先介绍了测试的类型,然后主要通过一个 React 项目教会你如何使用 Jest 编写第一个测试,然后使用 Enzyme 对 React 组件进行浅层渲染...因此这里建议直接使用 npx jest 执行测试。 编写第一组测试 每个测试文件通常有多个测试Jest 允许我们通过 describe 函数对测试进行分组,它创建了一个可以组合多个测试的块。...接着,我们又编写了一个包含多个测试文件,并通过 describe 函数将测试组织得井井有条。...Jest 测试文件中使用它。...配置 jest-enzyme 你应该还记得,在刚才的测试代码中,我们还是使用Jest 自带的 Matcher(toEqual)。

2.9K10

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

技术方案 针对项目本身使用的是React + Dva + Antd的技术栈,单元测试我们的是Jest + Enzyme结合的方式。...):在每个测试执行之前需要执行的方法 afterEach():在每个测试执行完后执行的方法 这里,我以项目中的一个基础 demo 来演示一下具体使用: Counter.js export default...通过第一个测试加 1,number的值为 1,当第二个减 1 的时候,结果应该是 0。但是这样两个间相互干扰不好,可以通过 Jest 的钩子函数来解决。...如果代码中使用了Promise,则可以通过返回Promise来处理异步代码,jest会等该promise的状态转为resolve时才会结束,如果promise被reject了,则该测试不通过。...上面的代码匹配符可以改写为: // 使用'.resolves'来测试promise成功时返回的值 it('使用'.resolves'来测试promise成功的情况', () => { return

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

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

在较大规模的前端项目中,测试对于保证代码质量十分重要,而React的组件化和函数式编程, 这种相同输入一定返回相同输出的幂等特性特别适合单元测试。...* test:也可以it,测试 * expect:使用该函数断言某个值 常用断言 * toBe:测试是否完全相等 * toBeCloseTo:浮点数比较 * toEqual:对象深度比较 * not...Jest 周期函数 在写测试之前,可以四个周期函数进行一些处理: beforeAll(() => { console.log('所有测试测试之前运行'); }); afterAll(()...=> { console.log('所有测试测试完毕后运行'); }); beforeEach(() =>{ console.log('每个测试测试之前运行'); }); afterEach...(() => { console.log('每个测试测试完毕后运行'); }); 五、Jest Mock函数 在单元测试中,有许多对象或函数并不需要真实的引用,因此需要mock。

5.9K30

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

test包裹在一起 describe('utils.js', () => { // test即it test('pick', () => { // 期望值 // 当执行pick...() 作用: 把遇到的计时器挂起,在必要时,再使用jest.runOnlyPendingTimers执行掉已经挂起的计时器 这里使用jest.useFakeTimers()的目的就是暂停正在执行的timer...测试 import React from 'react'; //enzyme库用来判断、操纵和遍历 ReactComponents import {mount} from 'enzyme'; import...props 测试 test('component props', () => { // jest.fn()建立 mock function // 进行单元测试时,应该将关注点放在.../docs/api/mount.html 通过本文,你应该知道 ① jest.useFakeTimers()的作用及何时使用 ② 如何测试function ③ 如何测试ReactComponent ④

6.1K50

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

在这篇教程中,我们将学习如何测试更复杂的组件,包括 Mock 去编写涉及外部 API 的测试,以及通过 Enzyme 来轻松模拟组件交互 初次尝试 Jest Mock 我们的应用程序通常需要从外部的...打开 TodoList 的测试文件,首先在最前面通过 jest.mock 配置 axios 模块的 Mock(确保要在 import TodoList 之前),在 Mock 之后,无论在测试还是组件中使用的都将是...然后创建一个测试,检查 Mock 模块是否被正确调用。...首先通过 jest.spyOn,我们便可以监听一个函数的使用情况,然后使用配套的 toBeCalled Matcher 来判断该函数是否被调用。整体代码十分简洁,同时也保持了很好的可读性。...从测试返回 promise 是确保 Jest 等待其异步方法执行结束的一种方法。 小结 在本文中,我们介绍了 mock 模块,并将其用于伪造API调用。

4.7K20

使用storybook管理React组件

本文已React的UI组件为,演示如何新建/集成Storybook到项目中,并对UI组件进行全方位的管理,包括发布、demo文档、测试等。 1....测试UI组件 4.1 写测试的原因 找到bug 新修改没有改变已有的接口和功能 将测试作为文档 4.2 测试结构 使用storyshots插件来实现,其核心是使用Jest,原理是每次生成一份DOM...PS:下次运行Jest时,只有DOM结构与上次完全一致测试才会通过,通常会有两种方法来解决这种情况: 找到问题,修复不同; 新的DOM结构替换旧的。...4.3 测试交互 storybook交互性测试可以使用 Enzyme来模拟用户输入,然后使用Mocha or Jest来进行结果测试,storybook又一个专门的插件帮助我们集成他们:specifications...-16'; enzymeConfigure({ adapter: new Adapter() }); 在stories/test.js中编写测试: import React from 'react

3.2K20

对 React 组件进行单元测试

单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试测试框架 测试框架的作用是提供一些方便的语法来描述测试,以及对进行分组。...此外, Jest测试是并行执行的,而且只执行发生改变的文件所对应的测试,提升了测试速度。...四个基础单词 编写单元测试的语法通常非常简单;对于jest来说,由于其内部使用了 Jasmine 2 来进行测试,故其例语法与 Jasmine 相同。...一般使用 Enzyme 中的 mount 或 shallow 方法,将目标组件转化为一个 ReactWrapper对象,并在测试中调用其各种方法: import Enzyme,{ mount } from...React 单元测试常见案例 的预处理或后处理 可以beforeEach和afterEach做一些统一的预置和善后工作,在每个的之前和之后都会自动调用: describe('test components

4.2K40

使用 Jest 进行前端单元测试

我们在写一个测试前,如果能对非关键的依赖进行 mock,只约定好最后的返回,就不用再先解决一堆依赖和环境问题,把精力集中在要测试的单元上来编写 test case ,同时也缩短测试执行的时间,做到最小化测试...Timer 业务代码中如果有 setTimeout 这样的计时器,在测试过程中如果真实的去执行,可能会严重拖慢整个测试项目的执行时间,设想一个功能有 n 个测试,延时就会被重复 n 倍。...除此之外 Jest 也可以结合 enzyme 更好的在 React 项目中进行测试enzyme 是 airbnb 开源的一个 React 测试工具,通过 Shallow Rendering 的实现对...要了解更多可以阅读 官方文档 [附3] 和 enzyme [附4] 。 异步支持 如果有使用过 node-tap 之类的老测试框架,在遇到异步情况时候肯定感受过麻烦了。...中,不同的测试文件是分开独立执行的,如果担心各种 mock 和 unmock 在不同测试之间造成冲突,可以按照分类把分开放到不同文件内。

5.5K90

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

JavaScript测试教程-part 1: Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme测试 React 组件 3....spyOn 函数返回一个 mock函数。有关其功能的完整列表,请阅读文档。我们的测试检查组件在渲染和运行之后是否从模拟中调用 get函数,并成功执行。...,请记住清除每个测试之间的模拟调用,例如通过运行 getSpy.mockClear(),否则函数调用的次数将在测试之间保持不变。...从测试返回 promise 是能够确保 Jest 等待其解决的一种方法。 总结 在本文中,我们介绍了模拟模块,并将其用于伪造 API 调用。由于没有发出实际的请求要求,我们的测试可以更可靠、更快。...JavaScript测试教程-part 1: Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme测试 React 组件 3.

3.7K10

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

JavaScript测试教程-part 1: Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme测试 React 组件 3....我们在这里用了 Jest,不过 Enzyme 也可以与 Mocha 和 Chai 之类的库一起使用Enzyme 基础 Enzyme 是一个库,用于在测试时处理你的 React 组件。...这里要注意一个非常重要的点:即使我们用了 Enzyme,但测试运行程序仍然是 Jest。由于我们的是 expect 函数,因此可以使用各种可供调用的匹配器函数。我已经在课程的第一部分中提到了它们。...要将其与 Jest 一起使用,请安装 jest-enzyme 包。 1npm install jest-enzyme 最后要做的是将其导入 setupTests 文件中。...总结 本文中我们已经了解了使用 Enzyme 测试 React 组件的基本知识。我们已经介绍了安装 Enzyme 并运行第一个简单测试使用的渲染类型称为“浅渲染”。

1.4K50

前端自动化测试

前言 本文主要是介绍基于React+Ant Design(以下Antd表示Ant Design)的项目,在对于自己封装的,或者基于Antd封装的公共组件的自动化测试技术的选型和实践。...操作变得十分友好 综合目前市面上的轮子,我们技术选型为Jest+Enzyme 实践 例子是一个基于Antd二次封装的单选年的日期选择器,如下演示: 图片 代码结构如下 图片 其中测试相关的文件,...这里可以首先简单的看一下,Jest+Enzyme的基本语法: Jest的API更多着力于定义测试、断言、mock库 定义测试: describe: 定义一个测试套件(test suite) it: 定义一个测试...(test) beforeEach: 定义一个回调函数在每个测试之前执行 expect: 执行一个断言 jest.fn(): 创造一个mock函数 一些用于断言的方法: toEqual: 验证两个值是否相同...Enzyme的API更多着重于渲染react组件和从dom树种检索指定的节点 下面是三种渲染组件的方法: shallow: 会渲染至虚拟dom,不会返回真实的dom节点,大幅提升测试性能 mount:

1.9K20

年轻时,我不写单元测试

从字面解析来看,那就是把你的代码,拆分成一个一个的单元,然后针对不同的单元,编写不同的测试。...如果你已经有了答案,欢迎下方指正) 基于此,笔者希望在前端编写测试能够实现以下的目标: 先保证一个一个的模块基础功能正常 增加新功能时,原有功能不受影响 本着实现以上的要求,笔者下来介绍下具体的使用...,关于不同测试框架的重点,这篇文章就不详细展开了,最终结合我们的项目,最终采用了facebook的jest+enzyme。...重点将展开以下两种react组件类型测试。 展示型组件测试 展示型组件测试,意思就是要确保每一次的修改都是符合预期的,这里笔者要着重介绍下jest框架里面的snapshot功能。...那其实整个流程就是初始化这个组件,看看渲染的html结构是否符合预期,然后点击下拉框,选中其中第一个,发起请求,拉回详细数据,再观察组件是否展示正常,编写完测试后,就已经代码模拟了整个手工操作,怎么样

84820

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

•所有重要的功能都应该被集成测试验证到。 •级别5 •对每一个重要的缺陷修复都要增加一个测试与之对应。•积极使用可用的代码分析工具。•总体测试覆盖率不低于60%。...下面让我们看一个简单的计数器的例子,以及两个相应的测试:第一个是使用 Enzyme[4] 编写的,第二个是使用 React Testing Library[5] 编写的。...注意:这个AAA模式并不特定于测试库。事实上,它甚至是任何测试的一般结构。我在这里向您展示这个是因为我发现测试库如何方便地在每个部分中编写测试是一件很有趣的事情。...测试当我们点击链接时,它是否参数导航到其他页面: 现在,要检查导航是否工作,我们必须触发导航链接上的单击事件。...最后,我们将使用Jest函数mockResolvedValueOnce()来传递模拟数据作为参数。 现在,对于第二个测试,我们可以单击按钮来获取数据并使用async/await来解析它。

14.8K33

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

此时老框架针对其内部API函数,写了充分的单侧。在开发新框架时,直接运行老前端框架的单侧,如果所有测试都通过,则可快速保证内部api的一致性,快速验证所有功能。...KarmaKarma 能在真实的浏览器中测试,强大适配器,可配置其他单测框架,一般会配合 Mocha 或 Jasmine 等一起使用每个框架都有自己的优缺点,没有最好的框架,只有最适合的框架。...node测试框架因为egg内置Mocha,因此不额外引入jestJest 被各种 React 应用推荐和使用。...react组件,最开始使用Enzyme,后面从React脚手架创建的项目自带React Testing Library(RTL),官方推荐使用RTLimport React from "react";import...参考使用Enzyme和React Testing Library测试React Hooks https://cloud.tencent.com/developer/article/1651156点击加入群聊

3.2K30

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

原有用 早期的项目中其实是有一些单元测试代码的,主要是 Jasmine 对部分 model/collection 进行了测试。...早先测试的主要问题在于: 一是没有整合到工作流中,采用单独的网页作为载体,久而久之就会遗忘这个步骤,可能失效,新加入的团队成员也不会注意到这项工作的存在 二是当时对 model/collection...根据目标项目的情况采用了 enzyme-adapter-react-13 做适配 cross-env 设置环境变量 test,从而配置出适用于 jest 的 .babelrc 文件,且不影响生产环境...总结 jest 灵活的配置能力,使其能方便的应用于各种类型既有项目的 TDD 开发和重构 之前的其他测试框架下的,可以快速迁移到 jest 中 Backbone.View 视图组件在经过 ES6 升级和合理封装后...组件引入的模板,也可以 jest.doMock() 很好的支持 将单元测试任务加入原有的 build 工作流,可以保证相关代码之后的持续有效 (end)

3.4K10

【译】使用Enzyme和React Testing Library测试React Hooks

确保代码没有bug的一种方法就是编写测试测试React hooks与测试一般程序的方式没有太大区别。 在本教程中,我们将了解如何通过使用带有hooks的to-do应用程序来实现这一点。...我们将介绍使用Enzyme和React Testing Library编写测试,这两个库都能做到这一点。...如果你第一次使用Enzyme,我们之前发布过关于它的文章,《Enzyme如何在React应用中与Jest一起使用》。我们可以用他们来深入测试React Hooks。...我们使用getTestId来返回元素的与data-testid匹配的节点。在这个例子里是元素。然后,我们检查它总共有两个子元素(每个子元素是无序列表中的元素)。...无论你是使用Enzyme或是enzyme与React Testing Library其中之一来写测试完全取决于你。不管怎样,试着使用linting,毫无疑问,你会很高兴你这样做了。

4K30
领券