Jest 使用指南 - - 基础篇
Posted Felix皇子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jest 使用指南 - - 基础篇相关的知识,希望对你有一定的参考价值。
Jest 使用指南 - - 基础篇
#jest
Jest 基础
Jest 语法
- description
Describe, 一种用于包含一个或多个相关测试的 Jest 方法。每次在开始为功能编写新的测试套件时,都将其包装在 describe 块中。
description('一组测试的名称', () => {
// 测试的方法
})
- test
Test 是实际的测试模块,我们会在 test 里面运行我们的一些函数或方法,一般在测试里有三部分:输入(参数等)、功能(运行的函数方法)、预期输出(期望的结果)
我们在有些单测文件中会看到使用it
,其实这两个是一样的,在 api 文档中说的的test
,但是it
其实也提到了,it
是test
的一个别名,所以这里你使用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);
})
})
-
expect
字面意思:期望的,这里就很容易理解了,就是运行我们的功能方法后,期望的结果是什么 -
匹配器
在上面的例子中,我们用到了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 使用指南 - - 基础篇的主要内容,如果未能解决你的问题,请参考以下文章