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

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

导语 本文主要介绍基于 React 框架项目,在对自己封装组件或者是通过 HOC , render props 方式第三方 UI 组件库(e.g....Ant Design)基础封装公共组件自动化测试技术选型以及项目中实践 封装组件背景 多人协作项目中,特别是项目团队,会有多个技术选型类似的项目,例如是都是通过 React 全家桶搭建项目...下面来聊一下如何写测试用例,总结分为两个方法: Snapshot 快照测试 组件业务逻辑测试 建议阅读下面内容之前,先了解一下 Enzyme 基本 api: https://github.com/airbnb...写组件测试时候,使用 .toMatchSnapshot() 创建一个 snapshot 快照, describe('Input', () => { it('render correctly...当你首次运行这个 test 时候,测试过程, 会生成一个 __snapshots__ 文件夹,里面的文件就是我们生成快照, 步骤 3.

2.3K80

JestReact Testing Library:前端测试最佳实践

Jest 是一个功能丰富JavaScript测试框架,而React Testing Library 是一种提倡以用户角度编写测试库,它鼓励测试组件行为而不是内部实现细节。...或yarn add --dev jest @testing-library/react @testing-library/jest-domjest.config.js配置Jest,例如:module.exports...,通常与你组件文件同名,带有.test.js或.test.tsx后缀。...const button = screen.getByRole('button');fireEvent.click(button);清理和解构每个测试之后,确保清理掉任何副作用,如添加到DOM元素...插件生成代码覆盖率报告,确保有足够测试覆盖:npx jest --coverage持续集成将测试集成到持续集成(CI)流程,确保代码质量始终如一:# .github/workflows/test.yml

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

前端单元测试之Jest

单元测试基础,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 功能测试,就是对产品各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求功能。...; 沙箱和快速:Jest虚拟化了JavaScript环境,能模拟浏览器,并且并行执行; 快照测试:Jest能够对React 树进行快照或别的序列化数值快速编写测试,提供快速更新用户体验; 支持异步代码测试...Snapshot 快照测试第一次运行时候会将被测试ui组件不同情况下渲染结果保存一份快照文件,后面每次再运行快照测试时,都会和第一次比较,除非执行“yarn test – -u”命令删除快照文件...v1, https://goo.gl/fbAQLP exports[`react-comp snapshot test 1`] = ` react组件 `; exports...[`react-comp snapshot test2 1`] = ` react组件 `; 如果被测试代码有正常更新,可以使用“jest --updateSnapshot

2.7K20

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

合理使用Snapshot Jest snapshot快照)原本是用来测试React 虚拟vdom结构,利用expect(value).toMatchSnapshot([快照名称])将复杂vdome...另外,要注意系统路径差异,可能会造成Mac编写测试Windows却运行失败: // window路径,Mac上会报错expect(value).toMatchInlineSnapshot(...所以推荐大家用.toMatchSnapshot([快照名称])给快照设置命名,差异对比就能一眼看出是哪句测试代码出问题了,也不会有维护问题。 React组件如何覆盖测试?...上面覆盖文件如果覆盖率低于100%,Jest就会报错,从而中断代码提交或仓库CI合入。...Webstorm —— Jest最好调试工具 Webstorm调试Jest测试非常便利,事实,上文中测试截图都是Webstorm运行结果,在运行、调试两个方面,Webstorm体验都比node-inspect

4.9K40

React 设计模式 0x8:测试

学习如何轻松构建可伸缩 React 应用程序:测试 # 如何测试组件 测试每个 Web 应用程序中都非常重要,即使 React 也是如此,特别是在其组件方面。... src 目录下创建一个名为 sum.test.js 文件,然后将以下内容添加到该文件: function sum(a, b) { return a + b; } test("adds 1...回归测试目的在于确保一切仍然像以前一样正常工作。 可以使用 Jest 快照测试来实现这种回归测试。...文件 scripts 部分下: { "e2e-test": "cypress open." } 然后终端运行 npm run e2e-test 并等待。...React 组件工具和函数 编写测试用例 编写完整测试用例,覆盖组件所有代码路径,包括正常情况和异常情况 使用快照测试 使用 Jest 快照测试功能来验证组件是否按预期呈现 使用模拟数据

1.8K10

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

写在前面 关于前端单元测试,其实两年前就已经关注了,那时候只是简单知道断言,想着也不是太难东西,项目中也没有用到,然后就想当然认为自己就会了。 两年后今天,部门要对以往项目补加单元测试。...然后翻阅了大量文档,发现基于dva单元测试文档比较少,因此在有了一番实践之后,梳理了几篇文章,希望对于想使用 Jest 进行 React + Dva + Antd 单元测试你能有所帮助。...、Mock、Snapshot 快照测试等,这些我们会在下面 React 单元测试示例依次讲解。...我们测试也主要是用到了mock函数提供以下三种特性: 捕获函数调用情况 设置函数返回值 改变函数内部实现 下面,将分别介绍这三种方法以及他们实际测试应用。...实际jest.spyOn()是jest.fn()语法糖,它创建了一个和被spy函数具有相同内部代码mock函数。 Snapshot 快照测试 所谓snapshot,即快照也。

4.9K20

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

因此在这一篇文章里, 我们将介绍基于下面的几个框架来搭建持续集成: React Native 与持续集成服务器 Travis CI 使用 单元测试 Jest 及 UI 测试框架 React Test...持续集成:Travis CI GitHub 创建开源项目的时候,都喜欢用 Travis CI 来作为持续集成服务器。... Growth 里,我们配置 Travis CI 来做下面的一些事情: 配置基础环境 Travis CI 改用了 Node.js 包管理工具 npm 为 yarn,并使用了缓存机制来加速构建...Facebook 推出单元测试框架,带有 mock 功能 react-test-render。用来保存一次 UI snapshot enzyme。...因为 Travis CI Agent 配置并不是那么理想,便不在上面运行相应测试了。

2.1K50

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

开发新框架时,直接运行老前端框架单侧用例,如果所有测试用例都通过,则可快速保证内部api一致性,快速验证所有功能。...使用Snapshot快照可以解决。...(); }) })快照执行流程:第一次执行toMatchSnapshot,会将expect结果生成一个快照修改组件保存后,第二次执行toMatchSnapshot,会再次生成快照,和上次快照对比,...如果一致,则测试通过,如果不一致,测试不通过,说明组件有改动更新快照对比结果:npm test – -u 了解测试覆盖率 Statements 语句覆盖率,它其实对应就是js语法语句,js解析成ast...orange-ci跑单元测试 优点:配置简单,和现有的工作流集成在一起,可以构建前执行测试用例,执行效率高…总结node项目可以利用egg自带测试工具,针对controller, service,

3.2K30

Vue 应用单元测试策略与实践 01 - 前言和目标

Vue 应用单元测试,对 UI 组件和 vuex store 等测试区别有何不同?颗粒度该细到什么程度?...Snapshot Testing 快照测试,其实是很认可快照这种形式,需要改进其工作流,至少结合 Image Snapshot 和 Storybook 等工具,甚至更应该放到 CI 上去。... Vue 应用单元测试,对 UI 组件和 vuex store 等测试区别有何不同?颗粒度该细到什么程度? // Given 一个有基本UT知识没写过Vue测试新人?...那么在这个上下文中来谈要不要单元测试,我们就可以很有根据了,而不是“开发爽了就用,不爽就不用”这样含糊答案: 如果你说业务部门不需要频繁上线,并且有足够的人力来覆盖手工测试,那你可以不用单元测试...Jest 经常被炒作功能之一是用户界面的快照测试。快照测试可以作为测试金字塔上层一个很好补充,请记住,单元测试仍然是坚实基础。

86340

React 组件测试技巧

React 组件常见测试模式。 注意: 此页面假设你正在使用 Jest 作为测试运行器。如果你使用不同测试运行器,你可能需要调整 API,整体解决方案是相同。...测试环境页面阅读更多关于设置测试环境细节。 在这个页面上,我们将主要使用函数组件。然而,这些测试策略并不依赖于实现细节,它对于 class 组件也同样有效。...--- 快照测试 {#snapshot-testing} 像 Jest 这样框架还允许你使用 toMatchSnapshot / toMatchInlineSnapshot 保存数据快照”。...在这个示例,我们渲染一个组件并使用 pretty 包对渲染 HTML 进行格式化,然后将其保存为内联快照: // hello.test.js, again import React from "react...例如,你可能正在使用 react-test-renderer 组件运行快照测试,该组件内部使用子组件内部 ReactDOM.render 渲染一些内容。

4.9K00

40道ReactJS 面试问题及答案

处理事件: HTML ,事件处理程序通常是内联函数或全局函数。 React ,事件处理程序通常定义为组件类方法。...事件对象: HTML ,事件对象会自动传递给事件处理函数。 React ,事件对象也会自动传递给事件处理函数, React 会规范化事件对象以确保不同浏览器之间行为一致。... React ,您还在事件处理函数中使用 event.preventDefault(),您在传递给该函数事件对象上调用它。...React 服务器端渲染如何工作? 服务器端渲染(SSR)是一种React 应用程序发送到客户端之前服务器渲染它们技术。...最后,我们断言使用正确表单数据调用了handleSubmit 函数。 快照测试:快照测试是一种捕获组件输出“快照”并将其与先前存储快照进行比较方法。 使用 Jest 创建和维护组件输出快照

18510

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

测试组件 Props 在前一篇文章,我们已经测试了传递 Props 给组件情况。实际,我们可以直接测试 Props。... TodoList 测试代码添加快照测试: // src/TodoList.test.js import React from 'react'; import { shallow } from '...输入以下命令,一键更新所有快照: npm test -- -u 实际,目前 CRA 默认会在监听模式下运行 Jest,我们可以一个个更新冲突快照。...首先运行 npm test ,然后输入 i 以交互方式更新失败快照。官方 Jest 文档提供了一个动画来展示这个过程: ?...除此之外,我们还介绍了 Jest 快照测试,这是一个非常强大工具,可以追踪组件渲染方式变化。接下来文章,我们还将介绍测试中常见 Mock 技巧——与组件模拟交互,不见不散!

2.1K20

Sentry 开发者贡献指南 - 测试技巧

处理异步动作 视觉回归 处理不断变化数据 Jest 测试 API Fixtures CI Kafka 测试 更多 作为 CI 流程一部分,我们 Sentry 运行了多种测试。...测试检查 SQL 查询 将以下内容添加到项目根目录 conftest.py : import itertools from django.conf import settings from django.db...我们 Sentry 使用验收测试有两个目的: 涵盖仅通过端点测试或仅使用 Jest 无法涵盖工作流程。 通过我们视觉回归 GitHub Actions 为视觉回归测试准备快照。...虽然我们对视觉回归有相当广泛覆盖,仍有一些重要盲点: 悬停(Hover)卡片与悬停状态 模态窗口 图表和数据可视化 所有这些组件和交互通常不包含在可视化快照,您在处理其中任何一个时都应该小心。...CI Kafka 测试 Snuba 测试套件 (.github/workflows/snuba-integration-test.yml) 是唯一真正让 Kafka CI 运行测试套件。

1.6K50

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

如果你不是很熟悉单元测试,可能会任务两种都很好。但是实际 Enzyme 实现有两个误报风险: •即使代码损坏,测试也会通过。•即使代码正确,测试也会失败。 让我们来举例说明这两点。...除非合并,否则将覆盖DOM测试库默认设置。 基本,这个函数所做就是使用ReactDOM呈现组件。直接附加到document.body新创建div呈现(或为服务器端呈现提供水合物)。...触发事件通常会触发应用程序一些更改,因此我们必须执行一些断言来确保这些更改发生。我们测试,这样做一个好方法是确保呈现给用户计数已经更改。...事实,它甚至是任何测试用例一般结构。在这里向您展示这个是因为发现测试库如何方便地每个部分编写测试是一件很有趣事情。...如果,你 App.js 做出更改,测试将失败,因为快照将不再匹配。

14.8K33
领券