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

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

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

9.5K20

使用storybook管理React组件

本文已React的UI组件例,演示如何新建/集成Storybook到项目中,并对UI组件进行全方位的管理,包括发布、demo文档、测试等。 1....一个分页组件例 从团队的stoneUI组件库直接移植过来 将Pagination、IconV组件源码放入components目录; 编写story: import React from 'react...测试UI组件 4.1 写测试用例的原因 找到bug 新修改没有改变已有的接口和功能 将测试用例作为文档 4.2 测试结构 使用storyshots插件来实现,其核心是使用Jest,原理是每次生成一份DOM...4.3 测试交互 storybook交互性测试可以使用 Enzyme模拟用户输入,然后使用Mocha or Jest来进行结果测试,storybook又一个专门的插件帮助我们集成他们:specifications...,通过断言来测试UI组件的属性,更多使用方法可以参考specifications插件的使用

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

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

技术方案 针对项目本身使用的是React + Dva + Antd的技术栈,单元测试我们用的是Jest + Enzyme结合的方式。...Jest特点: 零配置 快照 隔离 优秀的 api 快速且安全 代码覆盖率 轻松模拟 优秀的报错信息 Enzyme Enzyme是Airbnb开源的React测试工具库,提供了一套简洁强大的API,并内置...在开源社区有超高人气,同时也获得了React官方的推荐。 ? Jest 本篇文章我们着重来介绍一下Jest,也是我们整个React单元测试的根基。 环境搭建 安装 安装JestEnzyme。...那假如 setTimeout 设置几百秒,难道我们也要在 Jest 中等几百秒后再测试吗? 显然这对于测试的效率是大打折扣的!!...总结 到这里,关于前端单元测试的一些基础背景和Jest的基础api就介绍完了,在下一篇文章中,我会结合项目中的一个React组件来讲解如何组件单元测试。 ?

4.9K20

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

这将用作查询的基本元素,以及在使用debug()打印的内容。•hydrate:用于服务端渲染,使用 ReactDOM.hydrate 加载你的组件。...这两种方法将在本文中大量使用。 render,顾名思义,有助于渲染React组件。cleanup 作为一个参数传递给 afterEach ,以便在每次测试后清理所有东西,以避免内存泄漏。...这样,我们现在就可以测试在开始加载的页面是否是主页。以及导航栏是否加载了预期的链接。...最后,我们将使用Jest函数mockResolvedValueOnce()来传递模拟数据作为参数。 现在,对于第二个测试,我们可以单击按钮来获取数据并使用async/await来解析它。...现在我们要测试三件事: •如果HTTP请求已经正确完成•如果使用url完成了HTTP请求•如果获取的数据符合期望。 对于第一个测试,我们只检查加载消息在没有数据要显示是否显示。

14.9K33

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

需要渲染更深层次的子组件也可以用 enzyme 提供的dive方法来实现。...Jest Snapshot Test的特点: Jest 使用一个 test renderer 来生成出 React tree 的序列化结构树。...可以想象成每次UI有变化时会重新生成这个组件并刷新, React会帮开发者处理具体怎么高效的变化。 因此我们在测试组件的时候, 也只要把重点放在测试我们如何描述这个组件。...// 生成这个组件的shallowWrapper, props测试需要传给组件的prop const setup = props => { return shallow(<Home {......测试 server 的时候和正常的 WWW API 测试类似, 只要保证发送的请求(同样需要 mock header 并正确的调用 setContext 来设置 graphql 请求的参数)在 server

3.2K21

React 组件进行单元测试

React 单元测试中用到的工具 Jest 不同于"传统的"(其实也没出现几年)的 jasmine / Mocha / Chai 等前端测试框架 -- Jest使用更简单,并且提供了更高的集成度、更丰富的功能..."presets": ["env", "react"] } 以上是基本的配置,而实际由于webpack可以编译es6的模块,一般将babel中设为{ "modules": false },此时的配置...一般使用 Enzyme 中的 mount 或 shallow 方法,将目标组件转化为一个 ReactWrapper对象,并在测试中调用其各种方法: import Enzyme,{ mount } from...优化依赖 让 React 组件变得 testable 合理编写组件化的 React并将足够独立、功能专一的组件作为测试的单元,将使得单元测试变得容易; 反之,测试的过程让我们更易厘清关系,将原本的组件重构或分解成更合理的结构.../modal 在一个项目中用到了 react-bootstrap 界面库,测试一个组件,由于包含了其 Modal 模态弹窗,而弹窗组件是默认渲染到 document 中的,导致难以用普通的 find

4.2K40

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

在之前的两篇教程中,我们学会了如何测试最简单的 React 组件。在实际开发中,我们的组件经常需要从外部 API 获取数据,并且组件的交互逻辑也往往更复杂。...在这篇教程中,我们将学习如何测试更复杂的组件,包括用 Mock 去编写涉及外部 API 的测试,以及通过 Enzyme 来轻松模拟组件交互 初次尝试 Jest Mock 我们的应用程序通常需要从外部的...,但是所幸 Jest 我们提供了完整的支持。...在本文中,我们研究了如何使用 react-hooks-testing-library[2] 处理它。...这就是我们使用 react-hooks-testing-library[4] 的原因,我们将在下一篇教程里讲解如何更加舒适的测试 React Hooks 的方法,敬请期待!

4.8K20

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

Jest 是一款轻量的 JavaScript 测试框架,它的卖点是简单好用,由 facebook 出品。本文就简单讲讲如何使用 JestReact 组件进行测试。 为什么需要单元测试?...可以通过设置 Jest 配置文件的 testMatch 或 testRegex 选项进行修改,或者 package.json 下的 "jest" 属性。...但 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 造轮子系列:Icon 组件思路

React.FunctionComponent 与 IconPropps 本轮子使用 React + TypeScript 来写的,那么在 ts 中如何声明函数组件及级 Icon 组件传递参数呢,答案是使用...使用 svg-sprite-loader 加载 SVG 在上面我们指定了 Icon 的namewechat,那怎么让它显示微信的图标呢,首先在阿里的 Iconfont 下载对应的 SVG image.png...首先我们对我们的 classes 方法时行单元测试,这里使用 Jest 时行测试,也是 React 官网推荐的。...Snapshot测试UI 这里测试 UI 相关还需要使用一个库 Enzyme , Enzyme 来自 airbnb 公司,是一个用于 React 的 JavaScript 测试工具,方便你判断、操纵和历遍...如果还不行,你需要在 WebStorm 里设置jest 的引用: image.png 这是因为 typescript 默认排除了 node_modules 里的类型声明。

2.1K20

React 造轮子系列:Icon 组件思路

React.FunctionComponent 与 IconPropps 本轮子使用 React + TypeScript 来写的,那么在 ts 中如何声明函数组件及级 Icon 组件传递参数呢,答案是使用...使用 svg-sprite-loader 加载 SVG 在上面我们指定了 Icon 的namewechat,那怎么让它显示微信的图标呢,首先在阿里的 Iconfont 下载对应的 SVG image.png...首先我们对我们的 classes 方法时行单元测试,这里使用 Jest 时行测试,也是 React 官网推荐的。...Snapshot测试UI 这里测试 UI 相关还需要使用一个库 Enzyme , Enzyme 来自 airbnb 公司,是一个用于 React 的 JavaScript 测试工具,方便你判断、操纵和历遍...如果还不行,你需要在 WebStorm 里设置jest 的引用: image.png 这是因为 typescript 默认排除了 node_modules 里的类型声明。

4.6K70

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

1.2 Enzyme Enzyme是AirBnb开源的React测试工具库,通过一套简洁的api,可以渲染一个或多个组件,查找元素,模拟元素交互(如点击,触摸),通过和Jest相互配合可以提供完整的...('InteractionManager'); 六、Jest UI快照测试 Jest提供了snapshot快照功能用于UI测试,可以创建组件的渲染快照并将其与以前保存的快照进行比较,如果两者不匹配,则测试失败...这对于隔离组件进行纯单元测试很有用,效率高,可以进行模拟交互,并且从Enzyme 3开始也可以访问组件生命周期,所以一般组件测试用shallow即可。 mount:完整渲染,包括其子组件。...因为渲染了真实的DOM节点,可以用来测试DOM API的交互和组件的生命周期。 render:静态渲染,渲染静态HTML字符串,包括子组件,不能访问生命周期,不能模拟交互。..._onClear).toBeCalled();//测试组件实例上的方法是否被调用 九、Redux测试使用React或者React Native通常会使用Redux进行状态的管理,需要mock store

6K30

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

JavaScript测试教程-part 1:用 Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme测试 React 组件 3....JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互 今天,我们进一步测试 React 组件。它涉及模拟组件交互和模拟 API 调用。你将学到两种方法,开始吧!...React 组件的交互 在之前的文章中,我们提到了阅读组件的状态或属性,但这是在实际与之交互。...从测试中返回 promise 是能够确保 Jest 等待其解决的一种方法。 总结 在本文中,我们介绍了模拟模块,并将其用于伪造 API 调用。由于没有发出实际的请求要求,我们的测试可以更可靠、更快。...JavaScript测试教程-part 1:用 Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme测试 React 组件 3.

3.7K10

前端自动化测试

React项目测试选型 react-addons-test-utils:官方API,有些晦涩 Enzyme:源自Airbnb,封装了React官方测试API,类Jquery风格简洁的API, 使得Dom...操作变得十分友好 综合目前市面上的轮子,我们技术选型Jest+Enzyme 实践 例子是一个基于Antd二次封装的单选年的日期选择器,如下演示: 图片 代码结构如下 图片 其中测试相关的文件,...这里可以首先简单的看一下,Jest+Enzyme的基本语法: Jest的API更多着力于定义测试、断言、mock库 定义测试: describe: 定义一个测试套件(test suite) it: 定义一个测试...Rendering 比如说当我们需要对DOM API交互或者你需要测试组件的整个生命周期的时候,需要使用这个方法。...测试默认值,即检查输入框的值是否默认值 测试清除按钮是否可用,通过模拟点击清除按钮,测试是否能按照预期清除输入框内填充的默认值 测试设置值,点击输入框,弹出选择框,选择值,检查输入框中的值是否选择的值

1.9K20

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。...在测试与 DOM 的交互或高阶组件,它也被证明是有用的。

1.7K20

每日前端夜话(0x04):2018年JavaScript状态调查(中)

GitHub 10k stars GraphQL是一种可以与任何后端服务相关联的查询语言和执行引擎。 GraphQL 随时间的流行度 ? GraphQL 最受喜欢的方面 ?...今天,程序需要知道自己如何获取数据以呈现在模板和组件中。 这就产生了一系列的数据提取和数据管理工具。 毫无疑问,Redux是这些工具中使用最广泛的工具,其82%的满意率证明了它的成熟度。...测试 Jest ? GitHub 22k stars 令人愉快的JavaScript测试Jest 随时间的流行度 ? Jest 最受喜欢的方面 ? Jest 最不受欢迎的方面 ?...GitHub 31k stars 交互式UI组件开发和测试ReactReact Native,Vue,Angular,Ember Storybook 随时间的流行度 很抱歉,我们没有足够的数据来显示该库随着时间推移的流行度...这表明开发人员真的很感激Facebook所做的努力,提供了一个功能齐全的测试框架,可以用来测试前端(它在开始的初衷是测试React组件)和后端代码,而不需要配置。

1.5K20

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

---- 写在开头: 单元测试对于很多人比较模式,它是一种推动开发,或者提高产品质量的手段, 我画一张图,大家就能理解 ---- 其实单元测试,就是先编写单元测试代码,然后使用单元测试框架,去模拟环境...框架,测试React组件Enzyme、dva、Antd按需加载等主流技术~ 推荐大家使用 我开源的脚手架在npm上叫:ykj-cli 使用步骤: npm i ykj-cli -g 或 yarn add...文件(必须是tsx结尾,因为要测试React组件) 一个合格的React项目,组件必须是tsx结尾,工具文件ts结尾,声明文件.d.ts结尾 首先引入enzymeReact以及对应的组件 import...: 挂载login组件 传入Name和changeShowCount函数作为Props 检测挂载后的树型结构中的container类名的元素长度1 这里⚠️:如果是断言,需要判断值的,使用toBe,如果是...其实像Jest用起来还是比较方便的,核心理念就是使用测试框架运行业务代码,再用单元测试代码去检测你的业务代码,前后端单元测试理念其实都是一样的思想,检测代码运行结果嘛。

1.1K20

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

JavaScript测试教程-part 1:用 Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme测试 React 组件 3....JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互 在本教程的第一篇中,我们简要介绍了单元测试的基础。这次要更进一步,使用 Enzyme测试 React。...我们在这里用了 Jest,不过 Enzyme 也可以与 Mocha 和 Chai 之类的库一起使用Enzyme 基础 Enzyme 是一个库,用于在测试处理你的 React 组件。...总结 本文中我们已经了解了使用 Enzyme 测试 React 组件的基本知识。我们已经介绍了安装 Enzyme 并运行第一个简单测试使用的渲染类型称为“浅渲染”。...之所以这样称呼,是因为它不渲染任何子组件。在编写单元测试,它工作得很好。在本教程的后续部分中,我将介绍其他类型的渲染,并学习如何测试程序的不同部分。它将包括快照测试模拟数据之类的技术。下次见!

1.4K50

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

在上一篇教程中,我们已经介绍了使用 Enzyme 测试 React 组件的基本知识。...今天,我们将更深入地挖掘并学习如何测试组件的 Props,如何(以及为什么)使用 mount 函数,以及什么是 Jest 快照测试。...在测试与 DOM 的交互或者在处理高阶组件,mount 函数也可以派上用场。_Mount 使用 DOM 实现的模拟Jest 默认使用的是 jsdom。...快照测试 快照测试Jest 的一大招牌功能。所谓快照,可以简单地理解成是我们应用的一个**“代码截图”**。当我们运行快照测试Jest 将会渲染组件并创建其快照文件。...- END - ● JavaScript 测试系列实战(一):使用 JestEnzyme 测试 React 组件● 你不知道的 Npm(Node.js 进阶必备好文)● 用动画和实战打开 React

2.1K20

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

在这篇文章中,我们将讨论如何将我们的组件测试Enzyme 迁移到 React Testing Library(RTL)。...基于这一原则,RTL 提供了谁都可以使用查询和可以帮助我们更容易访问的方式测试组件的语义查询。...在使用 userEvent.type 测试浏览器交互模拟性能较差 根据 RTL 作者 Kent C....转换重度测试组件内部的 Enzyme 测试案例 我们的一些测试会检查组件的状态,例如,如果加载状态被设置 true,并且没有反映在 DOM 中,就不可能在不更新前端代码的情况下将这些逻辑转换为 RTL...www.infoq.cn/article/1b1xze82HfsSd168M2k7 ) JavaScript 测试系列实战(一):使用 JestEnzyme 测试 React 组件 (https:

59110
领券