首页
学习
活动
专区
圈层
工具
发布

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

本篇教程是 JavaScript 测试系列实战 的第一篇教程,首先介绍了测试的类型,然后主要通过一个 React 项目教会你如何使用 Jest 编写第一个测试,然后使用 Enzyme 对 React 组件进行浅层渲染...接着,我们又编写了一个包含多个用例的测试文件,并通过 describe 函数将测试用例组织得井井有条。...初识 Enzyme:编写第一个 React 组件测试 很显然,我们不会仅仅满足于测试像 divide 那样简单的函数,我们希望能够测试一个 React 组件,但是和一个普通的 JavaScript...函数不同,测试一个 React 组件还需要两个关键的问题:1)怎么渲染待测试的组件;2)怎么测试渲染出来的组件。...)).toEqual(true); }); }); 可以看到,这里我们用 shallow 函数来浅层渲染 App 组件得到 app ,并且调用其 containsMatchingElement

4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用 Jest 进行 JavaScript 测试

    Jest 是目前最受欢迎的测试运行器之一,也是 Create React App 的默认选择。 首先要做的事情:我怎么知道要测试些什么? 当谈到测试时,即使是简单的代码块也会使初学者瘫痪。...如何测试 React? React 是一个非常流行的 JavaScript 库,用于创建动态用户界面。...Jest 可以顺利地测试 React 应用(Jest 和 React 均来自 Facebook 的工程师)。Jest 也是 Create React App 中的默认测试器。...如果你想学习如何测试React组件,请查看测试React组件:最明确的指南【https://www.valentinog.com/blog/testing-react/】。...该指南涵盖了单元测试组件、类组件、带hook的功能组件和新的 Act API。 结论(从这里开始) 测试是一个很大而且引人入胜的话题。有许多类型的测试和用于测试的库。

    3.6K30

    react生态下jest单元测试

    后面每次再运行快照测试时,都会和第一次的比较,若组件代码有所改变,则快照测试会失败,如果组件代码是最新的,优化过得代码,则需要更新快照,免得每次执行报错。...更新快照命令:jest --updateSnapshot 被测组件代码如下: //被测组件 import React from 'react'; const STATUS = { HOVERED.../Link.react"; import renderer from "react-test-renderer";// react-test-renderer则负责将组件输出成 JSON 对象以方便我们遍历...、断言或是进行 snapshot 测试 //React 组件的 render 结果是一个组件树,并且整个树最终会被解析成一个纯粹由 HTML 元素构成的树形结构 it("renders correctly.../Button.jsx'; describe('组件测试', () => { it('测试应该被回调', () => { const onClickMock = jest.fn();

    2.9K20

    React单元测试:Jest + Enzyme(一)

    但如果涉及到以下几个方面,你就要考虑是否有必要引入单测了: 业务比较复杂,前端参与的人员超过3人 公司非常注重代码质量,想尽一切办法杜绝线上出bug 你是跨项目组件的提供方 你在做一个开源项目 React...项目如何做单测 目前比较流行的React单测组合是Jest+Enzyme,下面我们先对它们做一个简单的了解。...Jest是Facebook开发的一个测试框架,它集成了测试执行器、断言库、spy、mock、snapshot和测试覆盖率报告等功能。...React项目本身也是使用Jest进行单测的,因此它们俩的契合度相当高。 Enzyme是由airbnb开发的React单测工具。...__jest__/__tests__" } 此时在命令行输入npm run test,出现以下结果,说明Jes安装成功并通过第一个测试: 总结 按照上面说的步骤,如果一切顺利,你的第一个单测用例应该成功跑起来了

    2K20

    React单元测试:Jest + Enzyme(二)

    前言 在上一篇教程中,我们成功搭建了基于Jest和Enzyme的单元测试框架并成功地跑起来第一个单元测试,可以点击这里回顾一下。今天,我们重点讨论如何通过Jest来mock数据。...,在加载的时候会发送api请求获取数据: import React, {PureComponent} from 'react' import dataApi from 'common/api/data'...: import React from 'react' import {mount} from 'enzyme' import BossTask from 'src/setting/reward/boss_task...这里,我们使用了enzyme的mout方法来渲染组件,这个方法会执行组件对应的生命周期方法。在上面的例子中,componentDidMount方法里就包含了请求api的方法。...总结 通过上面的步骤,就可以写出一个简单的模拟网络请求的单元测试了。更多的Jest+enzyne用法,请期待下一期的文章

    1.9K20

    【React】归纳篇(十)组件间通信方式之Redux | UI组件AntDesign | Redux-react

    /docs/react/use-with-create-react-app-cn redux (难点) 语法套路深 文档:http://www.redux.org.cn 概览 redux 是一个独立专门用于做状态管理的...JS库,不是React插件库 它可以用在react,angular,vue等项目中,但基本与react配合使用 作用:集中式管理react应用中多个组件共享的状态。...什么情况需要redux: 某个组件的状态,需要共享 某个状态需要在任何地方都可以拿到 一个组件需要改变全局状态 一个组件需要改变另一个组件的状态 使用 一个规定的套路。需要多写几遍。...react-redux 1、一个react插件库 2、专门用于简化react应用中使用redux 使用redux先写好结构: 在src中新建redux和containers文件夹 在redux文件夹下写好如下文件名...: 使用Provider组件对dispatch、subscribe、getState…进行全局管理 React-Redux 将所有组件分为两大类 UI组件 只负责UI的呈现,不带有任何业务逻辑

    1K30

    用Jest做前端单元测试

    倒也不是说前端单元测试一无是处,对于我们平常的业务功能测试可能没啥用,但对于框架作者来说还是很有用的,在很多知名的框架代码里我们也都能看到专门的test测试目录。...市面上比较常见的前端单元测试 Jest、Mocha,各种对比 Jest 略胜一筹,所以下面就来初体验下 Jest 吧。...Jest 安装和使用直接新建个目录用 npm 安装就可以写个 demo 了,Jest 官方文档上也有教程。...# 初始化npm init# 安装(也可以全局安装)npm install --save-dev jest#测试:注意先要在 package.json 里加上"scripts": { "test": "...jest" }npm run test求两个数字之和的 sum.jsfunction sum(a, b) { return a + b}module.exports = sum测试脚本文件 sum.test.js

    57920

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

    Jest 是一款轻量的 JavaScript 测试框架,它的卖点是简单好用,由 facebook 出品。本文就简单讲讲如何使用 Jest 对 React 组件进行测试。 为什么需要单元测试?...function sum(a, b) { return a + b; } export default sum; 然后我们用 Jest 来做测试。 import sum from '....但 Jest 本身并不支持 React 组件的测试 API,需要使用另外一个内置的 React Testing Library 库来测试 React 组件。...React Testing Library 是 以用户为角度 的测试库,能够模拟浏览器的 DOM,将 React 组件挂载上去后,我们使用其提供的一些模拟用户操作的 API 进行测试。...16,Enzyme 已死: https://dev.to/wojtekmaj/enzyme-is-dead-now-what-ekl 使用 Jest 测试 React 组件 我们先实现一个简单的 Button

    3.9K20

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

    Jest Snapshot Test的特点: Jest 使用一个 test renderer 来生成出 React tree 的序列化结构树。...Jest 的 snapshot 测试不仅可以对比React tree结构的区别, 也可以对比其他可序列化的值的区别。 比如对比Redux某个状态的state是否和之前相同。...实际应用时,我们用了 jest 的 shallow 方法来生成测试组件的wrapper; 用 enzyme-to-json/serializer 这个 lib 把生成的 shallowWrapper 转化成...我们的测试脚本可以这么写: // Mock Logger module中的方法, 用jest.fn来实现spy方法 Logger.log = jest.fn(); // setup shallowWrapper...和通常的 WWW API 测试的方法几乎相同。 用Jest实现的好处是保持所有的单元测试用统一的 framework 实现和运行, 用起来比较方便。

    4.1K21

    2021年React学习路线图

    你应该学习: 用 Redux 搭建一个项目 用 Redux 做数据获取和状态管理 可选的,看一下 Redux Thunk 一开始我很难理解 Redux。...学习 React 中它是可选的,但仍然是一个好用的库。 3.2 测试 Jest - 简单的 JavaScript 测试框架。 Jest 是一个简单的 JavaScript 测试框架,它注重简单性。...编写测试很重要,根据我的经验,通常比编写实际代码更难。 您应该学习最流行的测试库,如 Jest 和 Enzyme,以及如何使用库(如 Sinon )模拟 API 调用。...还有其他库,比如 React 测试库。 当应用程序变得复杂时,要对单个组件进行良好的单元测试以确保正确性,而不是假设它们按预期的方式运行。...3.5 小结 Redux/Redux Thunk 测试 React 组件 React 高级概念 自己搭建一个 React 项目 React 源码 3.6 资源推荐 Redux 初学者教程 https:/

    8.6K21

    【送红宝书】JavaScript 测试系列实战(四):掌握 React Hooks 测试技巧

    在这篇文章中,我们将体验强大的 react-hooks-testing-library,学习如何去测试钩子的同步和异步逻辑,并最终通过一个完整的例子去了解如何结合 Redux 框架进行测试。...它提供了一系列专门用于测试 Hook 的工具函数,能够模拟在真实组件中使用 Hooks。...注意 在编写 Jest 异步测试用例时,如果涉及到 Promise 的使用(包括 async/await ),要确保 return 一个值,否则测试会超时。详细介绍请参考 Jest 异步测试文档。...至于怎么用 Mock 来写,就留给作业给你吧~ 测试 Redux + Hooks 在规模较大的应用中,我们通常会使用一个状态管理库来解决复杂的数据流问题,而最受欢迎的选择无疑是 Redux。...如果你熟悉 Redux 的话,你应该记得 react-redux 提供了 Provider 组件来向所有子组件提供 Store 对象,但是在测试的时候,我们该怎么让 Provider 去包裹待测试的钩子呢

    2.5K00

    React 组件测试技巧

    React 组件的常见测试模式。 注意: 此页面假设你正在使用 Jest 作为测试运行器。如果你使用不同的测试运行器,你可能需要调整 API,但整体的解决方案是相同的。...为了避免一些样板代码,你可以使用 React 测试库,它的助手是用 act() 封装的。 注意: act 名称来自 Arrange-Act-Assert 模式。...用虚拟替换来 mock 这些模块可以使你为代码编写测试变得更容易。...在上面,我们通过调用 jest.useFakeTimers() 来启用它们。它们提供的主要优势是,你的测试实际上不需要等待 5 秒来执行,而且你也不需要为了测试而使组件代码更加复杂。...例如,你可能正在使用 react-test-renderer 组件上运行快照测试,该组件内部使用子组件内部的 ReactDOM.render 渲染一些内容。

    5.6K00
    领券