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

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

在较大规模前端项目中,测试对于保证代码质量十分重要,而React组件化和函数式编程, 这种相同输入一定返回相同输出幂等特性特别适合单元测试。...快照测试:能够创造一个当前组件渲染快照,通过和上次保存快照进行比较,如果两者不匹配说明测试失败。 测试报告:内置了Istanbul,通过一定配置可以测试代码覆盖率,生成测试报告。...,通过测试提交到远程代码仓库以保证代码质量。...,在携程持续集成流程再接入sonar, 可以查看完整单元测试报告。...; 通过单元测试,给项目带来了不少好处: 通过单元测试可以确保代码得到预期结果,在测试环境中就发现bug; 当修改依赖组件时,能在测试中发现被影响组件错误,这样可以支持我们更好重构代码,有利于项目的长期迭代

6K30

单元测试

测试目的 测试目的是为了带给我们带来强大代码信心,如果测试初衷忘掉,会很容易掉入测试代码细节陷阱。一旦关注点不是代码信心,而是测试代码细节,那么测试用例会变得非常脆弱,难以维护。...代码信心体现 测试可以确保得到预期结果 作为现有代码行为描述 促使开发者写测试代码测试代码可读性会更高 如果依赖组件有修改,受影响组件能在测试中发现错误 测试内容 什么是细节?...例如,如果组件名称是 FormPublishBtn,则文件名可以是 FormPublishBtn.spec.tsx。...jest,并完成jest相关配置 (目前) 项目中使用jest编写了测试用例 确保项目执行下述jest命令无问题 (生成报告,指定报告位置,生成json数据,指定json数据输出文件) jest --...,点击更多,选择发布单元测试(目前测试环境单测和打包中心单测是等效) 点击unitest插件执行报告查看结果 或在任务管理,进入单元测试报告界面查看 二、行云流水线发布任务时自动执行 当行云流水线执行项目发布时

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

Jest 进行 JavaScript 测试

最常见问题是“我怎么知道要测试些什么?”。如果你正在编写 Web 应用,那么一个好起点就是测试应用每个页面和每个用户交互。但 Web 应用由单元代码组成,函数和模块,需要进行测试。...还有一种方法可以获得代码覆盖率HTML报告方法,它就像配置Jest一样: "scripts": { "test": "jest" }, "jest": { "collectCoverage...JestHTML代码覆盖率报告 如果单击函数名称,你还会看到确切未经测试代码行: ? 单个文件Jest代码覆盖率报告 很整洁不是吗?使用代码覆盖,你可以在有疑问时发现要测试内容。...该指南涵盖了单元测试组件、类组件、带hook功能组件和新 Act API。 结论(从这里开始) 测试是一个很大而且引人入胜的话题。有许多类型测试和用于测试库。...在这个 Jest 教程,你学习了如何为覆盖率报告配置 Jest,如何组织和编写简单单元测试,以及如何测试 JavaScript 代码

2.7K30

Vue 业务系统如何落地单元测试

一直对单测很感兴趣,但对单测覆盖率、测试报告等关键词懵懵懂懂,最近几个月一直在摸索如何在Vue业务系统中落地单元测试,看到慢慢增长覆盖率,慢慢清晰模块,对单元测试理解比以前更加深入,也有一些心得和收获...单元在质量保证是非常重要环节,根据测试金字塔原理,越往上层测试,所需测试投入比例越大,效果越差,而单元测试成本要小多,更容易发现问题。...测试报告 生成测试报告在跟目录下coverage文件夹下,主要是4个指标。...演进:构建测试单元模块 将业务代码代码演变为测试代码,重点在: 设计:将业务逻辑拆分为单元模块(UI组件、功能模块)。 时间:可行重构目标与重构方法,要有长期重构心理预期。...回顾 定义 安装与使用(安装、调试、git拦截、测试报告) 常用API(jest、vue组件) 落地单元测试(拆分关键模块加单测) 演进:构建测试单元模块(设计原则、重构) 维护单元模块(代码规范

3.9K30

React Hook测试指南

举个例子,假如A同学写了一个叫做useOptionshook它接受一个叫做options参数,这个参数既可以是一个对象以是一个数组。...通过这个例子大家可能还是没有体会到单元测试对于我们平时产品迭代或者代码重构重要性,可是你试想一下在一个比较大项目中是有很多个A同学和B同学,也有成千上万个useOptions函数,当真的发生类似问题时候...这是因为如果我们在代码写完之后再编写测试的话,即使我们发现代码设计得再不合理,我们也没有动力去改了,因为对设计改动可能会让我们重写所有的代码,所以我们需要在实际编码之前进行单元测试编写,因为这个时候代码阻力是最小...所谓重复性就是:如果我们单元测试用例现在是可以通过,那么在代码不发生变动和测试用例没有改变前提下它将是一直可以通过。...项目引入jest 了解完jest一些基本API之后我们再来看一下如何在我们项目里面引入jest

1.7K10

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

写在前面 关于前端单元测试,其实两年前我就已经关注了,但那时候只是简单知道断言,想着不是太难东西,项目中也没有用到,然后就想当然认为自己就会了。 两年后今天,部门要对以往项目补加单元测试。...但是快速迭代过程却产生了大量问题:代码质量(可读性差、可维护性低、扩展性低)低,频繁产品需求变动(代码变动影响范围不可控)等。...因此单元测试概念在前端领域应运而生,通过编写单元测试可以确保得到预期结果,提高代码可读性,如果依赖组件有修改,受影响组件能在测试及时发现错误。 测试类型又有哪些呢?...“当然模拟异步请求是需要时间如果请求多的话时间就很长,这时候可以在本地mock数据,在根目录下新建 __mocks__文件夹。...总结 到这里,关于前端单元测试一些基础背景和Jest基础api就介绍完了,在下一篇文章,我会结合项目一个React组件来讲解如何做组件单元测试。 ?

4.9K20

学习笔记——在vue如何配置Jest(一)

最近在搞Jest单元测试,如何在vue安装和使用jest我就不说了,前一篇文章简单说了一下在使用jest时遇到一些问题,但是我觉得并没有真正解决很好。...采用方式就是新建一个空vue-cli生成jest来做单元测试项目,这就导致了测试环境配置是极为脆弱。而且还有十分大隐患。但是又没办法一下子解决。...所以,我想在这篇文章,整理记录一下jest配置参数用法等。   jest配置文件是单独生成在unit文件夹一个独立文件,并没有和vue-cli生成webpack构建环境相关联。...collectCoverageFrom:为数组匹配文件收集覆盖率信息,即使并没有为该文件写相关测试代码,需要将collectCoverage设置为true,或者通过--corverage参数来调用...这样我们就解释完了基础配置参数,学习过后,我们对jest配置有了一个基本了解。但是要想写单元测试文件,还是远远不够。下一篇文章,我会介绍如何在为vue单文件组件测试用例。

1.8K10

学习笔记——在vue如何配置Jest(一)

最近在搞Jest单元测试,如何在vue安装和使用jest我就不说了,前一篇文章简单说了一下在使用jest时遇到一些问题,但是我觉得并没有真正解决很好。...采用方式就是新建一个空vue-cli生成jest来做单元测试项目,这就导致了测试环境配置是极为脆弱。而且还有十分大隐患。但是又没办法一下子解决。...所以,我想在这篇文章,整理记录一下jest配置参数用法等。   jest配置文件是单独生成在unit文件夹一个独立文件,并没有和vue-cli生成webpack构建环境相关联。...collectCoverageFrom:为数组匹配文件收集覆盖率信息,即使并没有为该文件写相关测试代码,需要将collectCoverage设置为true,或者通过–corverage参数来调用jest...这样我们就解释完了基础配置参数,学习过后,我们对jest配置有了一个基本了解。但是要想写单元测试文件,还是远远不够。下一篇文章,我会介绍如何在为vue单文件组件测试用例。

1.9K30

小程序 自动化测试

Jest 默认环境是 Node.js 环境, 正在构建一个网络应用程序,你可以使用类似浏览器环境来jsdom代替 testMatch: '' //测试文件存放地址 jest 用于检测测试文件...-> 工具 -> 自动化测试,添加用例,点击录制按钮,对左侧模拟器上页面进行操作,系统会自动记录整个过程,在操作过程,可以对数据,页面进行快照、截图等操作在用例添加完成后,可以导出为jest代码...,在单独文件维护生成报表结果在项目可以在非项目中,运行jest,会对jest.config.js 配置进行解析1 publicPath 存放目录2 pageTitle 报表标题3 filename...// 测试代码})---使用方式 launch 方式使用 必须要关闭小程序开发工具,不然端口会被占用,如果在开发测试用例,不建议使用该方式在终端(非小程序开发工具),启动命令,不然会出现Error...除此之外,小程序有部分组件使用了系统原生组件,对于这部分组件,我们基于 uiautomator 和 wda 做了补充。

2.5K20

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

一个前端工程生命周期可以大致划分为这四个过程: [前端工程生命周期] 任何在这四个过程应用系统化、严格约束、量化方法都可以称之为工程化。...我们回想一下原有引用组件步骤: 引入这个组件js; 引入这个组件样式css(如果有); 在页面引入这个组件html; 最后是编写初始化组件代码。...答案是需要结合项目看实际情况。如果是基础库或者公共组件这样项目,单元测试还是很有必要。而对于那种就上线几天活动页,写详细单元测试可能真的会有点入不敷出。...[CSS模块化方案对比] 单元测试框架 单元测试框架我们选择了Jest,主要是因为开箱即用,不需要再引入断言库,生态很好,较多用于React项目,而且组内UI自动化测试系统是支持Jest,这篇文章...### 组件式引入 - 可以提前插入dom结构,如果浮层中有图片的话会先加载; - 属性 `visible` 控制组件是否可见。 import Button from '../..

4.2K112

Unit Testing

#应该测试程序 其实每一个项目都应该使用单元测试,单元测试可以很好保证你代码不会欺骗你。 世界上没有任何一个完美的程序,更不会有完美的人可以写出没有任何问题代码。...都指向到 根目录/src/前文中(.*)`匹配分组 未忽略 node_modules 文件夹代码 一般来说这个是默认Jest 默认会忽略 node_modules 文件夹文件和代码 无法识别...#一个好测试可以为我们带来什么 安全重构已有代码 -> 当你在重构当前代码时,完全不必担心会损坏其功能 保存业务原有逻辑 -> 只要 PM 没有改动需求,这个需求就应该是这样如果测试代码出了问题,...那么一定是你出了问题 快速回归 -> 当我们在开发业务时候,例如在原有功能上添加新功能,那么新开发功能不会影响之前业务逻辑,如果测试代码出了问题,那么一定是你问题 #测试覆盖率 在真实项目开发当中...但是如果你将所有的代码都写了单元测试,那么我觉得你是把全身安全带都绑上了,只露了一只眼睛,你开发工作将举步难行,下面来说说单元测试应该覆盖哪些,不应该覆盖哪些 组件类型/测试内容 分支渲染逻辑 事件调用

1.3K20

实例入门 Vue.js 单元测试

首先,对所谓“单元”定义是灵活,可以是一个函数,可以是一个模块,以是一个 Vue Component。...1.2 断言(assertions) 断言是单元测试框架核心部分,断言失败会导致测试不通过,或报告错误信息。...Vue.js 单元测试工具 2.1 Jest 不同于"传统"(其实没出现几年) jasmine / Mocha / Chai 等前端测试框架;Jest使用更简单(也许就是这个单词本意“俏皮话...我们可能习惯于依靠双手和眼睛,一次次验证我们写过组件;但如果你打算对每个组件每个改动都手动验证的话,或早或晚就会因为疲惫或懈怠,导致瑕疵留在代码。 这就是自动化单元测试为何重要原因。...测试性是一个检验组件结构良好程度实践标准。 VI.

2.8K20

前端单元测试Jest

在过程化编程,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)方法。 集成测试叫组装测试或联合测试。...前端测试框架有很多:mocha, jasmine, ava, testcafe, jest,他们都有各自擅长领域和特点,而我们采用jest框架具有如下一些特点: 适应性:Jest是模块化、扩展和可配置...Mock函数通常会提供以下三种特性: 捕获函数调用情况; 设置函数返回值; 改变函数内部实现; jest.fn() jest.fn()是创建Mock函数最简单方式,如果没有定义函数内部实现,jest.fn...当有异步方式运行代码时候,Jest需要知道当前它测试代码是否已经完成,然后它才可以转移动另一个测试,也就是说,测试用例一定要在测试对象结束之后才能够运行。...] = ` 我是react组件 `; 如果测试代码有正常更新,可以使用“jest --updateSnapshot ”命令重新更新缓存文件。

2.7K20

前端测试体系建设与最佳实践总结

作者:柯培霖,美团点评前端工程师,获得作者授权转载 ? 2019 年前端测试依然是一个炙手可热的话题。...尽管,那个时候笔者团队没有引入前端测试,但是考虑到测试必要性,且团队正在着手一个新项目,所以回去之后在这个新项目全量地接入了前端测试。 现如今大部分互联网团队都是走 敏捷开发 节奏。...它也可能有更好开发体验,以及更稳定测试。这种方法使重构变得轻而易举,同时可以实现访问性最佳实践。...但是对于一些公共组件测试还是很有必要,就像笔者前文说到过一样,当项目代码足够复杂时,一个通用组件改动迎接你可能就是一个线上 Case。...可以在最上面看到整个文件夹总体测试覆盖情况,和下面每个文件具体覆盖情况。点击文件进去还能查看具体代码覆盖情况。 总结 为项目添加测试是有一定成本,尤其是 UI 测试方面。

5.3K30

用于浏览器中视频渲染时间管理 API

、确定性渲染;2)通过各种技术优化性能;3)如何测试基于时间状态(或者,如何在测试中进行时间移动);4)如何将各种类型媒体(视频、字幕等)与单一事实来源同步。...这在简单情况下是可行,但是当进行粘贴剪辑这样动作时,虽然这个动作改变了场景持续时间,但是在实现上,该方案并没有重新计算这一过程,因此并不会更新场景持续时间,导致状态不一致问题。...同理当播放暂停,有人删除场景时,需要重新计算活动场景;当删除场景特定元素时,仍需要重新计算持续时间,但删除元素会影响场景以及更多其他同步状态值,使得更新不能及时。这个弊端是无法控制。...一个是播放开始时间戳,当没有播放时,为空值;另一个是播放偏移量,这表示项目被寻求最后时间代码,在此基础上,可以推导出项目的当前时间,据此我们可以创建一个链接,无论项目是否处于播放状态,都可以让任意组件与当前时间相联系...在 React ,重新渲染很慢,必须重新运行整个渲染函数,而不仅仅是依赖于时间一小部分 UI,还会导致组件组件需要重新渲染。

2.3K10

干货 | 携程 Web CICD 实践

在日常开发使用,携程GitDev CI/CD则提供公用配置模版,如用户没有特殊Step需求,可通过选择Step模版或者选择应用类型模版来自动生成上面的配置文件,无需关注yml详细配置。...2)Test Step集成了单元测试以及UI测试 集成单测框架又可分为mocha和jest,Web端统一使用jest,NFES测试镜像默认已有jest相关模块,如无特殊需求则不需要在用户项目的依赖安装测试相关依赖模块...如需自定义jest相关配置可写在用户项目jest.config.js。...这里可设置对每次代码提交单元测试覆盖率要求,如其覆盖率不低于60%,否则不能进行下一步骤。 每次代码提交CommitID单元测试结果展示如下: ?...Web端资源可以直接发布并获得相应资源地址,此Web资源地址会及时更新到node服务端资源资源路径。

76710

「前端架构」Grab前端学习指南

整个应用程序组件可能不得不共享和显示公共数据,但没有优雅方式来处理React。毕竟,React只是一个视图层,它并没有规定如何在传统MVC模式构建应用程序其他层,比如模型和控制器。...测试- - Jest + Enzyme Jest是Facebook一个测试库,旨在让测试过程无痛苦。与Facebook项目一样,它提供了一种开箱即用良好开发体验。...测试可以并行运行以获得更快速度,并且在监视模式下,只运行更改文件测试。我们喜欢一个特性是“快照测试”。...Jest和酶使编写前端测试变得有趣和容易。因为定义了明确职责和接口,所以React组件和Redux操作/缩减器相对容易测试很有帮助。...在大多数情况下,使用ESLint就像调整项目文件夹配置文件一样简单。如果您不为ESLint编写新规则,那么就没有什么可学习。当错误出现时,请注意它们,并将其谷歌,以找到推荐样式。

7.4K20

前端工程化实践总结 |

前端工程生命周期 任何在这四个过程应用系统化、严格约束、量化方法都可以称之为工程化。工程化程度越高,在工作因人个体差异性导致缺陷或者短板就会越少,项目质量可以得到更有效保障。...我们回想一下原有引用组件步骤: 引入这个组件JS; 引入这个组件样式CSS(如果有); 在页面引入这个组件; 最后是编写初始化组件代码。...答案是需要结合项目看实际情况。如果是基础库或者公共组件这样项目,单元测试还是很有必要。而对于那种就上线几天活动页,写详细单元测试可能真的会有点入不敷出。...断言库可以支持不同开发模式,比如chai.js就是一个BDD/TDD模式断言库。 测试覆盖率工具是用于统计测试用例对代码测试情况,生成相应报表,Istanbul(Jest内置集成)。...CSS模块化方案对比 单元测试框架 单元测试框架我们选择了Jest,主要是因为开箱即用,不需要再引入断言库,生态很好,较多用于React项目,而且组内UI自动化测试系统是支持Jest,这篇文章

4.4K41

前端单元测试那些事

很长一段时间以来,单元测试并不是前端工程师应具备一项技能,但随着前端工程化发展,项目日渐复杂化及代码追求高复用性等,促使单元测试愈发重要,决定整个项目质量关键因素之一 1.单元测试意义?...,在程序某个特定点该表达式值为真,判断代码实际执行结果与预期结果是否一致,而断言库则是讲常用方法封装起来 主流断言库有 assert (TDD) assert("mike" == user.name...处理 *.js 文件 moduleNameMapper - 支持源代码相同 @ -> src 别名 coverageDirectory - 覆盖率报告目录,测试报告所存放位置 collectCoverageFrom...在网页打开coverage目录下index.html就可以看到具体每个组件测试报告 ? ? 语句覆盖率(statement coverage)是否每个语句都执行了?...,如果没有定义函数内部实现,jest.fn()会返回undefined作为返回值,当然你可以给他设置返回值、定义内部实现或返回Promise对象,如下例: // 断言mockFn执行后返回值为name

4.3K40
领券