Jest 使用指南 - - 基础篇

Posted Felix皇子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jest 使用指南 - - 基础篇相关的知识,希望对你有一定的参考价值。

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 使用指南 - - 基础篇的主要内容,如果未能解决你的问题,请参考以下文章

Jest 使用指南 - - 基础篇

Jest 使用指南 - - Mock 篇

Jest 使用指南 - - Mock 篇

Jest 使用指南 - - Mock 篇

Jest 使用指南 - - Mock 篇

Jest 使用指南 - - ts 文件篇