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

Jest单元测试之旅—实践总结

前言:之前对于单元测试仅仅处于了解状态,并且在实际开发并没有用到。...在过程化编程,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)方法。...setTimeout进行包装,这个示例我们重点分析应该如何测试定时器。...这里分别使用了jest.spyOn和jest.Mock两个方式同一个方法进行3种不同编写方式测试,在实际情况我们应该选择合适方法。...('1-1'); }) }) 总结 上述主要是我们常见测试情况进行了一个分类总结,在实际开发对于测试原则做了一些总结: 减少面向实现细节设计测试,转而使用面向行为来测试(BDD)。

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

从echarts-for-react源码中学习如何写单元测试

,作用是「浅复制objkeys」,如何判断它返回是期待结果?...obj[key]; }); return r; }; 测试用例 // 浅复制objkeys import { pick } from '.....,但它们值是一样,也是可以 小结 对于有返回值function,就是通过判断「返回值」,是否与「期望值」相等即可 这样好处: ① 当有新需求要扩展该函数时,可以保证该函数返回值仍保持不变,进而不会影响到使用到该函数旧需求...通过本文,你应该知道 ① jest.useFakeTimers()作用及何时使用 ② 如何测试function ③ 如何测试ReactComponent ④ mount()/shallow()/render...()区别 ⑤ toEqual()和toBe()区别 ⑥ 如何测试DOM节点上属性 ⑦ 如何测试React组件实例上属性 ⑧ 如何测试组件上props ⑨ jest.fn()作用 ⑩ 如何测试组件已卸载

6.1K50

JavaScript 测试教程 part 1:用 Jest 进行单元测试

本文是 JavaScript 测试教程 系列第1部分 1. JavaScript测试教程-part 1:用 Jest 进行单元测试 2....被测试单元可以是函数、模块和类等。单元测试应该相互隔离并且彼此独立。对于给定输入,用单元测试检查结果,通过尽早发现问题并避免退化,可以帮助你确保程序每个部分都能按预期工作。...稍后我们将学习如何在 React 中使用 Jest 首先,让我们创建一些可以测试简单函数。...分组测试 每个文件通常会有一个以上测试。使用 Jest,你可以使用 describe 函数它们进行分组。它创建了一个可以合并多个测试块。...涵盖第一类测试是“单元测试”。为了执行它们,我们已经了解了 Jest 框架基础知识。它包括有关如何运行测试(安装和文件命名)知识。

2.8K20

Jest 进行 JavaScript 测试

一个超级重要客户端需要一个函数来过滤一个对象数组。 对于每个对象,我们必须检查名为“url”属性,如果属性值与给定术语匹配,那么我们应该在结果数组包含匹配对象。...根据规范,测试函数应该省略其 url 属性与给定搜索项匹配对象。..., "link"); 在 Jest 测试,你应该将函数调用包含在 expect ,它与匹配器(用于检查输出Jest函数)一起进行实际测试。...作为练习,你要写两个新测试并检查以下条件: 测试搜索词“uRl” 测试空搜索词。该函数应如何处理? 你将如何构建这些新测试? 在下一节,我们将看到测试另一个重要主题:代码覆盖率。...在这个 Jest 教程,你学习了如何为覆盖率报告配置 Jest如何组织和编写简单单元测试,以及如何测试 JavaScript 代码。

2.7K30

Jest测试语法系列之Matchers

关于Jest测试基础内容,可以参考之前博客:前端单元测试之Jest 本文主要讲的是匹配器(Matchers),匹配器(Matchers)是Jest中非常重要一个概念,它可以提供很多种方式来让你去验证你所测试返回值...+ 2) 将返回我们期望结果,通常情况下我们只需要调用expect就可以,括号可以是一个具有返回值函数,也可以是表达式。...后面的 toBe 就是一个matcher,当Jest运行时候它会记录所有失败matcher详细信息并且输出给用户,让维护者清楚知道failed原因,如果我们改成 toBe(5),将会输出错误提示...({one: 1, two: 2}); }); 真实性匹配 在实际项目测试,有时需要区分undefined、null和false,这些可以使用Jest真实性匹配。...are equivalent for numbers expect(value).toBe(4); expect(value).toEqual(4); }); 需要注意对于float类型浮点数计算时候

52420

记录第一次给开源项目提 PR

本文是深入浅出 ahooks 源码系列文章第八篇,这个系列目标主要有以下几点: 加深 React hooks 理解。 学习如何抽象自定义 hooks。...刚好我之前 useRequest 源码做过一些分析——如何使用插件化机制优雅封装你请求[3]。于是我决定 fix 一下这个 issue。...另外,对于一些还没有参与开源项目经验同学来讲,我觉得类似 ahooks 这种工具库是一个不错选择: 它模块划分更加清晰,你改了一个模块功能,影响面可以更好预估。新人比较友好。...[7] ahooks 那些控制“时机”hook都是怎么实现?[8] 如何让 useEffect 支持 async...await?[9] 如何让定时器在页面最小化时候执行?...: https://juejin.cn/post/7108675095958126629 [10]如何让定时器在页面最小化时候执行?

59911

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

文章内容力求深入浅出,浅显易懂~ “介于内容全部收在一篇会太长,计划分为两篇,本篇是第一篇,主要介绍如何快速上手jest以及在实战中常用功能及api ?...当有异步代码时候,测试代码跑完同步代码后立即结束,而是等结束通知,当异步代码执行完后再告诉jest:“好了,异步代码执行完了,你可以结束任务了”。...对于Promise情况,jest还提供了一匹配符resolves/rejects,其实只是上面写法语法糖。...jest.mock('axios'),我们让jestaxios做模拟,这样就不会去请求真正数据了。...总结 到这里,关于前端单元测试一些基础背景和Jest基础api就介绍完了,在下一篇文章,我会结合项目中一个React组件来讲解如何做组件单元测试。 ?

4.9K20

使用jest进行单元测试

扯犊子直接说吧,第一点,用数据、用茫茫多测试用例去告诉使用者,你程序是多么鲁棒健壮;第二点,把它作为一种素养去培养吧,当你按照一系列规范去做事,那么你做出来东西,我想是有品质在。...jest相关配置 package.json相关scripts 这里笔者罗列了常用通用一些关于jest脚本,后面测试结果会陆续补充一些测试脚本,以上脚本都编写在package.json文件下...通用写法 "test": "jest" : 这个比较傻瓜式,当执行npm run test这条命令是会去test目录下所有文件进行相应jest测试。...jest.config.js相关配置 里面配置参数太多了,有些配置了以后就可以不再package.json文件下写相应脚本,这里笔者阉割一部分,列举最常见几个。...not 先说个最简单expect(received).not.toBe(expected),这句话意思就是表示否,表示我断言、接收值不等于期望值。

3.5K60

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

在这一系列实战教程,我们将手把手带你掌握 Jest、Enzyme、Cypress 等测试利器,帮助我们从 bug 沼泽挣脱出来,成为一个无往不利高阶前端开发者!...本篇教程是 JavaScript 测试系列实战 第一篇教程,首先介绍了测试类型,然后主要通过一个 React 项目教会你如何使用 Jest 编写第一个测试,然后使用 Enzyme React 组件进行浅层渲染...测试类型 单元测试 单元测试目标可以是一个函数,一个类,或者一个模块。单元测试应该是相互隔离和独立对于给定输入,单元测试检查结果。...配置 jest-enzyme 你应该还记得,在刚才测试代码,我们还是使用了 Jest 自带 Matcher(toEqual)。...我们将在下一篇教程中讲解如何去更“深层”地去测试我们组件。

2.9K10

jest 单元测试改善老旧 Backbone.js 项目

对于早期前端 SPA 项目,Backbone.js + Require.js 是一种常见技术组合,分别提供了基础 MVC 框架和模块化能力。...对于这样既有项目,在之前文章也进行过分析,常常面临依赖不清、封装混乱,以及缺乏测试等问题;之进行维护和新需求开发时,结合其本身特点,在 TDD 方式下进行渐进改善,而非推倒重来,无疑是个可行办法...本文将尝试用一个重构实例来抛砖引玉,讲解如何其应用较新 jest 测试框架,并用 ES6 class 等新手段升级 Backbone.View 视图组件和改善页面结构,希望能对类似项目的改善起到开启思路作用...通常 Backbone 项目也可以忽略文中涉及 react 部分。 升级测试框架 和之前文章例子相同,本次依然采用 Jest 作为测试框架。...早先测试主要问题在于: 一是没有整合到工作流,采用单独网页作为载体,久而久之就会遗忘这个步骤,用例可能失效,新加入团队成员也不会注意到这项工作存在 二是当时 model/collection

3.4K10

React 组件进行单元测试

对于常见断言,举一些例子如下: 同等性断言 Equality Asserts expect(sth).toEqual(value) expect(sth).not.toEqual(value) 比较性断言...对于某些不容易构造或者不容易获取对象,用一个虚拟对象来创建以便测试测试方法 广义讲,以上 spy 和 stub 等,以及一些模块模拟, ajax 返回值模拟、 timer 模拟,都叫做...四个基础单词 编写单元测试语法通常非常简单;对于jest来说,由于其内部使用了 Jasmine 2 来进行测试,故其用例语法与 Jasmine 相同。...明确指定 PropTypes 对于一些之前定义并不清晰组件,可以统一引入 prop-types,明确组件可接收props;一方面可以在开发/编译过程随时发现错误,另外也可以在团队其他成员引用组件时形成一个明晰列表...; }); ... }); 调用组件“私有”方法 对于一些组件,如果希望在测试阶段调用到其一些内部方法,又不想原组件改动过大,可以用instance()取得组件类实例

4.2K40

实例入门 Vue.js 单元测试

对于开发活动各种测试,上图是一种最常见划分方法:从下至上依次为 单元测试->集成测试->端到端测试 ,随着其集成度递增,对应自动化程度递减。...对于常见断言,举一些例子如下: 同等性断言 Equality Asserts expect(sth).toEqual(value) expect(sth).not.toEqual(value) 比较性断言...对于某些不容易构造或者不容易获取对象,用一个虚拟对象来创建以便测试测试方法 广义讲,以上 spy 和 stub 等,以及一些模块模拟, ajax 返回值模拟、 timer 模拟,都叫做...实际使用,适当在 package.json jest 字段或独立 jest.config.js 里自定义配置一下,会得到更适合我们测试场景。...四个基础单词 编写单元测试语法通常非常简单;对于jest来说,由于其内部使用了 Jasmine 2 来进行测试,故其用例语法与 Jasmine 相同。

2.8K20

React Hook测试指南

在React为什么需要Hook我们探讨了React为什么需要引入Hook这个属性,在React Hook实战指南中我们深入了解了各种Hook详细用法以及会遇到问题,在本篇文章我将带大家了解一下如何通过为自定义...hook编写单元测试来提高我们代码质量,它会包含下面的内容: 什么是单元测试 单元测试定义 为什么需要编写单元测试 单元测试需要注意什么 如何自定义Hook进行单元测试 Jest React-hooks-testing-library...对于单元测试,被测试象是我们源代码独立单元(individual unit),在面向过程编程语言(procedural programming)里面,单元就是我们封装方法(function),在面向对象编程语言...项目引入jest 了解完jest一些基本API之后我们再来看一下如何在我们项目里面引入jest。...总结 在本篇文章我给大家介绍了什么叫做单元测试,为什么我们需要在自己项目里面引入单元测试以及教大家如何使用Jest和react-hooks-testing-library来测试我们自定义hook。

1.7K10

年轻时,我写单元测试

在一个多人协作大型项目中,我们在开发过程可能经常会面临到这样问题: 哎,这次我没有改动到这里啊,这怎么会有bug呢 哎,怎么新加了个功能原来功能受影响了呢 哎,这里样式为什么乱掉了 当我们被提出这些...那么我们如何能够避免以上问题,从而将经历投入到更多开发(写bug)中去呢?...其实之前就已经简单了解过了单元测试,但当时对于单元测试我是持有一种很否定态度,因为他太过于鸡肋,都是测试一些很基础功能,但是当笔者被这次重构折磨之后,有重新思考了下如何能够保证代码健壮性,抱着这个态度...,关于不同测试框架重点,这篇文章就不详细展开了,最终结合我们项目,最终采用了facebookjest+enzyme。...shapshot就是会对组件进行一次快照记录当前状态,每一次run jest时候,对比上一次,看看是否有变化。

85120

一杯茶时间,上手 Jest 测试框架

test:描述具体测试用例,是单元测试最小单元。 expect: Jest 最终落在了每一个测试结果 期望 上,通过 expect 返回值或是函数执行结果来和期望值进行对比。...4.Jest最锋利功能 Mock Functions 关于 Jest 测试框架Mock功能,我们主要关注两点: mock function: 函数进行mock. mock return value...从以上两点可以衍生出 Jest 对于代码单元测试两项常用锋利功能: 功能业务逻辑简化后重新实现,方便有指向性进行测试(比如忽略实际场景跨服务调用功能等,仅需将原有功能对应调用逻辑改为定义测试数据即可...功能返回值直接模拟。...通过 jest.mock ,我们 mock 了甜点评论区,这项操作可以使我们dessertCommentModule所有功能进行我们测试定制。

1.9K20

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

单元测试:是指软件最小可测试单元进行检查和验证,通常指的是独立测试单个函数。 UI 测试:是图形交互界面的测试。 集成测试:就是测试应用不同模块如何集成,如何一起工作,这和它名字一致。...结论 经过分析,最后我们项目的技术选型为 Jest + React Testing Library + Puppeteer 而对于 Vue 项目,为了保持技术栈统一,我们选用了 Jest + Vue-Test-Utils...e2e,并与 src 同放在根目录下 VScode 和 WebStorm 都有对应 Jest 插件,安装后书写代码时有代码补全,debug 和自动运行等功能 如何编写测试 其实,Jest 语法蛮简单...下面一起看一下如何处理这些情况。 LocalStorage 因为 Jest 环境是基于 jsdom, 所以我们需要去模拟 localstorage 行为。借鉴 Vue2.0 里数据侦测方法。...文档 写相当详细, Vue 项目编写测试时可以参考。

5.3K30
领券