jest使用指南--基础篇(代码片段)

Felix皇子 Felix皇子     2022-11-11     780

关键词:

Jest 使用指南 - - 基础篇

#jest

Jest 基础

Jest 语法

  1. description
    Describe, 一种用于包含一个或多个相关测试的 Jest 方法。每次在开始为功能编写新的测试套件时,都将其包装在 describe 块中。
description('一组测试的名称', () => 
	// 测试的方法
)
  1. test
    Test 是实际的测试模块,我们会在 test 里面运行我们的一些函数或方法,一般在测试里有三部分:输入(参数等)、功能(运行的函数方法)、预期输出(期望的结果)
    我们在有些单测文件中会看到使用 it ,其实这两个是一样的,在 api 文档中说的的 test ,但是 it 其实也提到了,ittest 的一个别名,所以这里你使用 it 替换 test 也是可以的 Globals · Jest
description('一组测试的名称', () => 
	// test
	test('一个测试的名字', () => 
		// 实际的测试代码
	)
it('一个测试的名字', () => 
		// 实际的测试代码
	)
)

用一个简单的例子来看看

// index.ts
export const add = (a:number, b:number):number => a + b

// index.test.ts
import  add  from './index' // 功能,一个实现两数相加的函数方法
description('test 1', () => 
	test('两数相加', () => 
		const a = 1, b = 2; // 输入
		const output = 3; // 预期的结果
		expect(add(a, b)).toBe(output))
)
  1. expect
    字面意思:期望的,这里就很容易理解了,就是运行我们的功能方法后,期望的结果是什么

  2. 匹配器
    在上面的例子中,我们用到了toBe 意思是比较两个值是否一致,使用在数字、字符串等简单的数据类型上,对象的话就是引用地址的比较。
    我们来说一下常用的匹配器有哪些,完整版可以参考 预计 · Jest

  • toBe: 正如上面说的,使用的是 Object.is 进行比较的,注意比较浮点数的时候可能会存在精度丢失问题导致两个不一致
  • toEqual: 比较两个对象的时候使用这个,递归检查对象或数组的每个字段。
expect(data).toEqual(one: 1, two: 2);
  • 真值比较
    • toBeNull:只匹配 null
    • toBeUndefined 只匹配 undefined
    • toBeDefined 与 toBeUndefined 相反
    • toBeTruthy 匹配任何 if 语句为真
    • toBeFalsy 匹配任何 if 语句为假
  • 数字的比较
    • toBeGreaterThan:大于某个值
    • toBeGreaterThanOrEqual:大于等于某个值
    • toBeLessThan: 小于某个值
    • toBeLessThanOrEqual: 小于等于某个值
    • toBeCloseTo:比较浮点数相等,上面说到了 toBe 或 toEqual 容易精度丢失
const value = 0.1 + 0.2;
  //expect(value).toBe(0.3);           这句会报错,因为浮点数有舍入误差
  expect(value).toBeCloseTo(0.3); // 这句可以运行
  • 字符串比较
    • toMatch:支持正则表达式
expect('team').not.toMatch(/I/); // failed
expect('Christoph').toMatch(/stop/); // succeed
  • 数组及可迭代对象
    • toContain:检查一个数组或可迭代对象是否包含某个特定项
expect(shoppingList).toContain('milk');
expect(new Set(shoppingList)).toContain('milk');
  • 对于 error
    • toThrow:匹配抛出的错误
function compileAndroidCode() 
  throw new Error('you are using the wrong JDK');

test('compiling android goes as expected', () => 
  expect(() => compileAndroidCode()).toThrow();
  expect(() => compileAndroidCode()).toThrow(Error);
  // You can also use the exact error message or a regexp
  expect(() => compileAndroidCode()).toThrow('you are using the wrong JDK');
  expect(() => compileAndroidCode()).toThrow(/JDK/);
);

jest使用指南--ts文件篇(代码片段)

Jest使用指南--ts文件篇#jestts文件的单测ts文件主要是一些工具方法的使用,然后对于其中的工具方法进行单测,比对返回的数据结构,包括基础数据类型、对象、数组、函数异步方法这部分直接参考测试异步代码·Jest... 查看详情

jest使用指南--ts文件篇(代码片段)

Jest使用指南--ts文件篇#jestts文件的单测ts文件主要是一些工具方法的使用,然后对于其中的工具方法进行单测,比对返回的数据结构,包括基础数据类型、对象、数组、函数异步方法这部分直接参考测试异步代码·Jest... 查看详情

jest使用指南--tsx组件篇(代码片段)

Jest使用指南--tsx组件篇#jest首先考虑一下,React组件我们需要测试哪些东西呢?React组件的render结果是一个组件树,并且整个树最终会被解析成一个纯粹由HTML元素构成的树形结构React组件可以拥有state,且state的变化... 查看详情

jest使用指南--mock篇(代码片段)

Jest使用指南--Mock篇#jestJestMock为什么会用到Mock?Mock能帮我们解决什么问题?在项目中,一个模块的方法内常常会去调用另外一个模块的方法。在单元测试中,我们可能并不需要关心内部调用的方法的执行过程和结... 查看详情

jest基础使用(代码片段)

Jest基础使用Jest的安装与运行Jest可以通过npm进行开发安装:#指定安装jestv23.6,不添加@23.6.0会安装最新版本$npminstall--save-devjest@23.6.0注意这里使用了--save-dev,指的是只有在开发环境下才会下载依赖包,package.j... 查看详情

jest使用指南--mock篇(代码片段)

Jest使用指南--Mock篇#jestJestMock为什么会用到Mock?Mock能帮我们解决什么问题?在项目中,一个模块的方法内常常会去调用另外一个模块的方法。在单元测试中,我们可能并不需要关心内部调用的方法的执行过程和结... 查看详情

jest使用指南--tsx组件篇(代码片段)

Jest使用指南--tsx组件篇#jest首先考虑一下,React组件我们需要测试哪些东西呢?React组件的render结果是一个组件树,并且整个树最终会被解析成一个纯粹由HTML元素构成的树形结构React组件可以拥有state,且state的变化... 查看详情

前端自动化测试框架jest中的mock(代码片段)

...test、expect、toBe三个方法,在之前我们也介绍了Jest的基础使用、Jest的简单配置、Jest中的匹配器(matchers)、Jest命令行工具的使用和异步代码的测试、Jest中的钩子函数及作用域,今天我们来说说Jest中的Mock。函数... 查看详情

rabbitmq基础教程之基本使用篇(代码片段)

RabbitMQ基础教程之基本使用篇最近因为工作原因使用到RabbitMQ,之前也接触过其他的mq消息中间件,从实际使用感觉来看,却不太一样,正好趁着周末,可以好好看一下RabbitMQ的相关知识点;希望可以通过一些学习,可以搞清楚以... 查看详情

django基础篇(代码片段)

一、django的常用命令  1、使用命令行创建    django-adminstartprojectproject_name  2、创建一个app    django manage.pystartappapp_name  (如果使用pycharm创建django项目可省略上面步骤)  3、创建一个superuser    djangom... 查看详情

mysql基础篇之分组查询(代码片段)

MySQL基础篇之分组查询简单分组函数的使用:#简单分组函数的使用selectmax(salary)fromemployees;selectmin(salary)fromemployees;selectavg(salary)fromemployees;selectcount(salary)fromemployees;selectsum(salary)fromemployees;也可以这样写 查看详情

10-django-基础篇-shell工具使用(代码片段)

shell工具使用前言准备数据工具使用前言本篇来学习Django的manage工具提供了shell命令工具,帮助我们配置好当前工程的运行环境(如连接好数据库等),以便可以直接在终端中执行测试python语句准备数据插入上一篇... 查看详情

15-django-基础篇-类视图(代码片段)

类视图前言类视图的定义类视图的多继承前言本篇来学习Django中类视图的使用类视图的定义在Django中也可以使用类来定义一个视图,称为类视图使用类视图可以将视图对应的不同请求方式以类中的不同方法来区别定义。如下#... 查看详情

数据科学指南#基础篇matplotlib入门(代码片段)

今天分享一个数据可视化的库:https://matplotlib.org/Matplotlib是什么?matplotlib是一个数据可视化的Python库。它提供了plot(二维关系图)和多种样式图表生成的函数。这样能够帮助开发者,更多时候是数据分析师快... 查看详情

数据科学指南#基础篇matplotlib入门(代码片段)

今天分享一个数据可视化的库:https://matplotlib.org/Matplotlib是什么?matplotlib是一个数据可视化的Python库。它提供了plot(二维关系图)和多种样式图表生成的函数。这样能够帮助开发者,更多时候是数据分析师快... 查看详情

markdown使用手册基础篇(代码片段)

🚀作者简介主页:水香木鱼的博客专栏:技术文档能量:🔋容量已消耗1%,自动充电中…笺言:用博客记录每一次成长,书写五彩人生。📒技术聊斋(一)简介Markdown是一种轻量级标记... 查看详情

flask框架基础篇(代码片段)

...拟环境配置参照中文文档:下面通过在代码里面介绍一些基础知识点:fromflaskimportFlaskfromflaskimport 查看详情

python基础篇_006_面向对象(代码片段)

面向对象1.初识类:#定义一个函数,我们使用关键字def"""def函数名(参数):‘‘‘函数说明‘‘‘函数体return返回值"""deffunc():print("funcexecute...")#定义一个类使用关键字class"""class类名:‘‘‘类说明‘‘‘类体"""classC:passclassPerson:role... 查看详情