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

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

大家好,我是前端西瓜哥。 Jest 是一款轻量的 JavaScript 测试框架,它的卖点是简单好用,由 facebook 出品。本文就简单讲讲如何使用 Jest 对 React 组件进行测试。...更多 API 可以看文档: https://jestjs.io/docs/expect 你可以用 describe 方法将多个相关的 test 组合起来,这样能让你的测试用例更好地被组织,测试报告输出也更有条理...yarn create react-app jest-app --template typescript 执行单元测试的命令为: yarn test CreateReactApp 内置了 Jest,...但 Jest 本身并不支持 React 组件的测试 API,需要使用另外一个内置的 React Testing Library 库来测试 React 组件。...React Testing Library 是 以用户为角度 的测试库,能够模拟浏览器的 DOM,将 React 组件挂载上去后,我们使用其提供的一些模拟用户操作的 API 进行测试。

2.9K20

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

(例如浏览器),然后运行你的代码,看代码是否按预期运行 ---- 这里为了降低文章篇幅,对于初学者更友好,于是这里使用我开源的通用脚手架,集成TypeScript+JavaScript混合开发,Jest...框架,测试React组件、Enzyme、dva、Antd按需加载等主流技术~ 推荐大家使用 我开源的脚手架在npm上叫:ykj-cli 使用步骤: npm i ykj-cli -g 或 yarn add...,欢迎你们在项目中使用。...发现报错,因为App组件是连接了dva的store数据中心,这里没有传入props 那么我们可以模拟传入store吗?...然后生成单元测试报告 yarn test-c 此时可以看到根目录的coverage文件夹下有了lcov-report文件夹,进入后我们直接打开里面的index.html文件,可以看到单元测试报告 --

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

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

    jest Jest 是 facebook 出的一个完整的单元测试技术方案,集 测试框架, 断言库, 启动器, 快照,沙箱,mock工具于一身,也是 React 官方使用的测试工具。...$": "babel-jest"} } 使用 Jest 生成测试报告 ?..."] } Jest 在真实浏览器环境下测试 目前 Jest 不支持直接在真实浏览器中进行测试,其默认的启动器只提供了一个 JSDOM 环境,在浏览器中进行单元测试目前只有 Karma 方案能做到,所以也可以使用...mount 使用 react-dom 渲染组件,会创建真实 DOM 节点,比 shallow 相比增加了可以使用原生 API 操作 DOM 的能力,对应的操作对象为 ReactWrapper,这种模式下感知到的是一个完整的...总结 如果让我推荐的话,对于真实浏览器我会推荐 Karma + Jasmine 方案测试,对于 React 测试 Jest + Enzyme 在 JSDOM 环境下已经能覆盖大部分场景。

    9.6K20

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

    快照测试:能够创造一个当前组件的渲染快照,通过和上次保存的快照进行比较,如果两者不匹配说明测试失败。 测试报告:内置了Istanbul,通过一定配置可以测试代码覆盖率,生成测试报告。...('InteractionManager'); 六、Jest UI快照测试 Jest提供了snapshot快照功能用于UI测试,可以创建组件的渲染快照并将其与以前保存的快照进行比较,如果两者不匹配,则测试失败...快照将在测试文件的当前文件路径自动生成的snapshots文件夹中保存。当主动修改造成ui变化时,使用jest -u来更新快照。..._onClear).toBeCalled();//测试组件实例上的方法是否被调用 九、Redux测试 在使用React或者React Native时通常会使用Redux进行状态的管理,需要mock store...Native项目单元测试的一个简单教程,在携程的持续集成流程中再接入sonar, 可以查看完整的单元测试报告。

    6.1K30

    用 Jest 进行 JavaScript 测试

    Jest 是一个 JavaScript 测试运行器,即用于创建、运行和结构化测试的 JavaScript 库。Jest 作为 NPM 包发布,你可以将其安装在任何 JavaScript 项目中。...Jest 是目前最受欢迎的测试运行器之一,也是 Create React App 的默认选择。 首先要做的事情:我怎么知道要测试些什么? 当谈到测试时,即使是简单的代码块也会使初学者瘫痪。...我们将使用 expect 和一个 Jest matcher 来检查这个函数在调用时返回的预期结果。...Jest的HTML代码覆盖率报告 如果单击函数名称,你还会看到确切的未经测试的代码行: ? 单个文件的Jest代码覆盖率报告 很整洁不是吗?使用代码覆盖,你可以在有疑问时发现要测试的内容。...Jest 可以顺利地测试 React 应用(Jest 和 React 均来自 Facebook 的工程师)。Jest 也是 Create React App 中的默认测试器。

    2.7K30

    前端单元测试那些事

    (Test Runner),让你的代码自动在多个浏览器(chrome,firefox,ie等)环境下运行 Mocha - Mocha是一个测试框架,在vue-cli中配合chai断言库实现单元测试( Mocha...在 Facebook 内部广泛用来测试各种 JavaScript 代码 2.2 单元测试分类 TDD - (测试驱动开发)侧重点偏向开发,通过测试用例来规范约束开发者编写出质量更高、bug更少的代码 BDD...3.单元测试之 Jest 运用 Jest 是 Facebook 开源的一款 JS 单元测试框架,它也是 React 目前使用的单元测试框架,目前vue官方也把它当作为单元测试框架官方推荐 。...我在项目开发使用jest作为单元测试框架,结合vue官方的测试工具vue-util-test 3.1 Jest 安装 npm install --save-dev jest npm install -g...Jest.config.js配置文件,当然也可以选择第二种,手动创建 手动创建并配置 Jest.config.js const path = require('path'); module.exports

    1.6K41

    构建工具篇 - react 的 yarn eject 构建命令都做了什么

    前言 前段时间,一直在研究 react 技术栈,对于项目的构建方面,又有一定的特殊需求,通过 npx create-react-app [filename] 安装以后,发现没有 webpack 相关的配置的目录...,在读了 react 官方文档后,发现通过 yarn eject 可以弹出相关的配置,进行自定义配置。...于是,我就想知道 eject 到底做了什么,发现里面涉及到很多的知识点,也有很多是我之前没有接触到的地方,自从看了 eject 和 build 的源码,我觉得,我们其实还可以做很多事。.../utils/createJestConfig'); // 创建单元测试配置 const inquirer = require('react-dev-utils/inquirer'); // 常用交互式命令行用户界面的集合...然后再次执行命令 在根目录创建文件夹 folders.forEach(folder => { fs.mkdirSync(path.join(appPath, folder)); }); 在根目录下创建对应的文件夹

    1.9K10

    React + Redux Testing Library 单元测试

    单元测试的意义 如果你说我的业务部门不需要频繁上线,并且我有足够的人力来覆盖手工测试,那你可以不用单元测试 如果你说我不在意代码腐化,并且我也不做重构,那你可以不用单元测试 如果你说我不在意代码质量,好几个没有测试保护的...在同一个文件夹中创建一个 math.test.js 文件,在这里我们将使用 Jest 来测试 math.js 中定义的函数: image.png 然后运行 yarn test (添加 NPM Script...,jest.fn() 代表着我就是一个 Stub(桩),“你来我就在这里,你走我也依然在这里,风雨无阻”。...从技术上讲,你可以在真实的浏览器中运行,但由于在不同平台上启动真实浏览器的复杂性,更建议使用 JSDOM 在虚拟浏览器环境中运行 Node 中的测试。...前端 UI 组件测试的最佳实践,使得我们可以使用它来更有效地测试组件。

    2.4K10

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

    您可以测试应用程序的许多方面,从单个函数及其返回值到在浏览器中运行的复杂应用程序。万丈高楼平地起,让我们先来了解一下有哪些测试。...集成测试则是用来测试跨模单元/模块的过程,可以很好地确保我们的代码能够作为一个整体运行。 端到端测试(E2E) 与其他类型的测试不同,E2E 测试总是在浏览器(或类浏览器)环境中运行。...函数,它接受一个表达式,然后后面可以调用 Matcher 来测试该表达式是否符合条件,例如这里我们就使用了最常用的 toBe Matcher;Jest 还提供了大量的 Matcher,可以帮助我们写出更简洁可读的断言语句...因此这里建议直接使用 npx jest 执行测试。 编写第一组测试 每个测试文件通常有多个测试用例。Jest 允许我们通过 describe 函数对测试用例进行分组,它创建了一个可以组合多个测试的块。...配置 jest-enzyme 你应该还记得,在刚才的测试代码中,我们还是使用了 Jest 自带的 Matcher(toEqual)。

    3K10

    web前端好帮手 - Jest单元测试工具

    不支持原生并行测试 断言库要另外安装 测试覆盖率统计功能要另外安装 原生输入的测试报告可读性很差,格式化也要另外安装 不支持snapshot,要另外安装第三方插件 Mocha使用过程中要安装大量第三方模块安装维护...Jest基础使用 项目接入Jest 安装Jest和Jest类型文件,类型文件可以让代码编辑器(如Webstorm)提供Jest相关接口的参数提示: npm install -D jest @types/...jest 在项目目录下创建jest.config.js,配置参考官网。...Jest并发实例注意事项 当初Jest推出的亮点之一就是运用并发优势大大加快了测试运行速度。Jest默认情况下是开启并发的,我们不需要另外配置启用就能享受测试的高速便利。...甚至可以说,在单元测试覆盖良好/完全的项目中,我们可以把”Code Review“的侧重点转移到单元测试覆盖上,即只要保证单元测试覆盖良好,功能代码多个空格少个空格、你爱用switch-case我爱用if-else

    5K40

    React Native 持续部署实践— push 代码构建出新版的 Growth

    因此在这一篇文章里, 我们将介绍基于下面的几个框架来搭建持续集成: React Native 与持续集成服务器 Travis CI 的使用 单元测试 Jest 及 UI 测试框架 React Test...Render 自动化功能测试 Appium 使用 fastlane 来实现持续部署 那么,先让我们从持续集成服务器 Travis CI 讲起。...持续集成:Travis CI 我在 GitHub 上创建开源项目的时候,都喜欢用 Travis CI 来作为持续集成服务器。...在新的 Growth 里,我们配置 Travis CI 来做下面的一些事情: 配置基础环境 在 Travis CI 上改用了 Node.js 的包管理工具 npm 为 yarn,并使用了缓存的机制来加速构建...部署:Fastlane 最后,让我再介绍一下 Fastlane,用它来解决 APP 发版的最后一公里问题。

    2.1K50

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

    然后我翻阅了大量的文档,发现基于dva的单元测试文档比较少,因此在有了一番实践之后,我梳理了几篇文章,希望对于想使用 Jest 进行 React + Dva + Antd 单元测试的你能有所帮助。...Jest 关于Jest,我们参考一下其Jest 官网[1],它是Facebook开源的一个前端测试框架,主要用于React和React Native的单元测试,已被集成在create-react-app...):在每个测试用例执行之前需要执行的方法 afterEach():在每个测试用例执行完后执行的方法 这里,我以项目中的一个基础 demo 来演示一下具体使用: Counter.js export default...当有异步代码的时候,测试代码跑完同步代码后不立即结束,而是等结束的通知,当异步代码执行完后再告诉jest:“好了,异步代码执行完了,你可以结束任务了”。...但这里我们思考一种场景:如果使用done来测试回调函数(包含定时器场景,如setTimeout),由于定时器我们设置了 一定的延时(如 3s)后执行,等待 3s 后会发现测试通过了。

    5K20

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

    除非合并,否则将覆盖DOM测试库中的默认设置。 基本上,这个函数所做的就是使用ReactDOM呈现组件。在直接附加到document.body的新创建的div中呈现(或为服务器端呈现提供水合物)。...注意:这个AAA模式并不特定于测试库。事实上,它甚至是任何测试用例的一般结构。我在这里向您展示这个是因为我发现测试库如何方便地在每个部分中编写测试是一件很有趣的事情。...因此,我们使用 createMemoryHistory() 来创建导航历史。 接下来,我们使用助手函数 renderWithRouter() 来呈现组件,并将历史记录传递给路由器组件。...最后,我们将使用Jest函数mockResolvedValueOnce()来传递模拟数据作为参数。 现在,对于第二个测试,我们可以单击按钮来获取数据并使用async/await来解析它。...结语 React Testing Library 是用于测试 React 应用的一大利器。它为我们提供了访问 jest-dom 匹配器的机会,以及最佳实践,使得我们可以使用它来更有效地测试我们的组件。

    15K33

    使用 Jest 进行前端单元测试

    我们只要稍作加工,就可以指定各个文件的行为,并模拟我们想要的情况来进行不同的测试,例如本例中控制 fetchUser 的返回。...例如使用 jest.useFakeTimers() 把遇到的计时器挂起,在必要时再使用 jest.runOnlyPendingTimers() 执行掉已经挂起的计时器。...除此之外 Jest 也可以结合 enzyme 更好的在 React 项目中进行测试(enzyme 是 airbnb 开源的一个 React 测试工具,通过 Shallow Rendering 的实现对...要了解更多可以阅读 官方文档 [附3] 和 enzyme [附4] 。 异步支持 如果有使用过 node-tap 之类的老测试框架,在遇到异步情况时候肯定感受过麻烦了。...现代的测试框架对异步的支持都是必需的。在 Jest 中也不用像 mocha 那样通过执行 done 来通知异步结束,而是直接返回 Promise 和 async/await 就好。

    5.6K90

    用TypeScript编写React的最佳实践

    将它们一起使用的原因是为了获得静态类型化语言( TypeScript )对 UI 的好处:减少 JS 带来的 bug,让前端开发更安全。 TypeScript 会编译我的 React 代码吗?...你可以运行以下面的命令: npx create-react-app my-app --template typescript 这可以让你开始使用 TypeScript 编写 React 。...无论您选择在项目中使用哪个,都要始终如一地使用它。 Props 我们将介绍的下一个核心概念是 Props。你可以使用 interface 或 type 来定义 Props 。...这是一个 React 和 TypeScript 协同工作的成果。 在极少数情况下,你需要使用一个空值初始化 Hook ,可以使用泛型并传递联合以正确键入 Hook 。...,则可以通过运行以下命令来实现: #yarn yarn add @types/jest #npm npm install @types/jest 这样,每当在项目中使用 Jest 时,就可以增加类型安全性

    4.7K51

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

    一旦完成本教程,你将能够: 基于需求创建 epic 和 user stories(用户故事) 基于用户故事创建测试 使用 TDD 开发一个 React 应用 使用 Enzyme 和 Jest 测试 React...首先,我们可以基于项目需求创建如下的史诗和用户故事: 史诗用户故事验收准则作为一个用户,我需要使用计时器以管理时间作为一个用户,我要能启动计时器以开始倒计时。...确保用户能够: *启动计时器 *看到计时器开始倒计时 即便用户多次点击启动按钮,倒计时也不应被中断作为一个用户,我要能停止计时器,这样只有在我需要时才会倒计时。...线框图 项目设置 首先,我们使用 Create React App 创建如下这样的一个 React 项目: $ npx create-react-app react-timer $ cd react-timer...计时器 所以,这就是我们如何使用 TDD 开发一个基础 React 应用的过程。用户故事及验收准则越细致,测试用例也将越精确,那将是大有裨益的。

    3.3K30

    React 设计模式 0x8:测试

    该库实际上通过 data-tested 查找节点中的元素以进行测试。还可以使用此库来模拟 API 并验证它们的真实性。...回归测试的目的在于确保一切仍然像以前一样正常工作。 可以使用 Jest 中的快照测试来实现这种回归测试。...# 使用 Jest 进行集成测试 在大多数 React 应用程序中,通常需要与外部 API 集成以在应用程序中发布和获取数据。 可以使用 Jest 来测试 API 行为,以查看预期和意外结果。...Jest 模拟函数 使用 模拟函数 来侦测(查看)我们的函数被调用的情况,或者使用它来测试单个函数或整个模块。...使用模拟数据来测试组件,以确保它们在不同的数据情况下都能正常工作 使用模拟函数 使用模拟函数来模拟组件的依赖项和外部接口,以便更好地控制测试环境 集成测试 编写集成测试来测试应用程序的整个流程

    1.8K10

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

    JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互 在本教程的第一篇中,我们简要介绍了单元测试的基础。这次要更进一步,使用 Enzyme 库测试 React。...这样可以使你的程序将更加可靠,并且更加容易避免回归。我们在这里用了 Jest,不过 Enzyme 也可以与 Mocha 和 Chai 之类的库一起使用。...这里要注意一个非常重要的点:即使我们用了 Enzyme,但测试运行程序仍然是 Jest。由于我们用的是 expect 函数,因此可以使用各种可供调用的匹配器函数。我已经在课程的第一部分中提到了它们。...相关列表,请访问 Jest 文档【https://jestjs.io/docs/zh/expect】。 让我们创建一些更有趣的测试。先创建一个全新的组件。...在第二个测试中,我们在组件上调用了 find 函数。这要归功于 shallow 函数返回 ShallowWrapper,它是渲染输出的包装器。它有一组可供调用的函数。

    1.4K50

    QQ音乐商业化Web团队前端工程化实践总结

    中有详细的介绍,可以结合这份性能测试报告综合评估ES6在node以及各种浏览器环境下的执行效率对比。...在选择器中,BEM要求只使用类名,不允许使用id,由以下三种符号来表示扩展的关系: 中划线( - ) :仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号。...代码规范 代码规范是一个老生常谈的话题,我们需要制定一些原则来统一代码风格,虽然不遵守规范的代码也是可以运行的,但是这会对代码的维护带来很多麻烦。...puppeteer 在真实的浏览器中运行测试,很方便,但是运行速度会慢一点。 phantomjs 无头浏览器,在puppeteer发布后,作者已经宣布不维护了。...UI组件 Jest支持对React App的测试,可以采用截图测试(Snapshot Testing)、模拟DOM操作(DOM Testing)等方法详见文档。

    4.3K112
    领券