jest mock ajax,jest 入门笔记

桓信鸥
2023-12-01

jest 入门笔记

Jest is a delightful JavaScript Testing Framework with a focus on simplicity.

It works with projects using: Babel, TypeScript, Node, React, Angular, Vue and more!

失去人性,失去很多;失去兽性,失去一切。 --三体

使用

新建项目

$ mkdir jestTest && cd ./jestTest

$ npm init -y

安装jest

# 初始化 jest 配置

$ npx jest --init

# 安装

$ npm install -D jest

*配置babel

$ npm install -D @babel/core @babel/preset-env

$ touch babel.config.js

babel.config.js 内容

module.exports = {

presets: [

["@babel/preset-env", {

targets: {

node: 'current'

}

}],

]

}

创建文件

$ mkdir src && cd ./src

$ touch index.js index.test.js

匹配器

expect(1 + 2).toBe(3); // 精确匹配

expect({one: 1}).toEqual({ one: 1 }); // 深度匹配

expect(null).toBeNull(); // Null匹配

expect(undefined).toBeUndefined(); // undefined 匹配

expect(var).toBeDefined(); // var是否定义

expect(true).toBeTruthy(); // true 匹配

expect(false).toBeFalsy(); // false 匹配

expect(false).not.toBe(true); // 取反匹配

expect(1).toBeGreaterThan(0); // 大于

expect(1).toBeLessThan(2); // 小于

expect(1).toBeGreaterThanOrEqual(1); // 大于等于

expect(1).toBeLessThanOrEqual(1); // 小于等于

expect(0.1 + 0.2).toBeCloseTo(0.3); // 浮点数

expect('toMatch').toMatch(/to/) // 是否包含

expect([1, 2, 3]).toContain(1) // 是否包含某些元素

expect(() => { throw new Error() }).toThrow(); // 异常匹配

异步

备用函数

function loadData(){

return new Promise((resolve, reject)=>{

resolve({

code: 200,

data: {}

});

})

}

// 通过返回

test('should loadData', async () => {

// expect.assertions(1); // 必须执行一个expect

return loadData().then(res => {

expect(res.code).toBe(200)

});

});

// 通过调用参数

test('should loadData', (deno) => {

loadData().then(res => {

expect(res.code).toBe(200)

deno();

});

});

// 通过resolves

test('should loadData', (deno) => {

return expect(loadData()).resolves.toMatchObject({

code: 200

});

});

勾子

// 开始执行一次

beforeAll(() => {

console.log('befaoreAll');

});

// 每个测试用例都会执行

beforeEach(() => {

console.log('beforeEach');

});

// 每个测试用例执行后都会执行

afterEach(() => {

console.log('afterEach');

});

// 勾子执行完毕

afterAll(() => {

console.log('afterAll');

});

describe('describe', () => {});

test('should xxx', () => {});

mock

const func = jest.fn(()=>{});

func.mockReturnValueOnce('value1')

.mockReturnValueOnce('value2');

func.mockReturnValue('value');

console.log(func.mock); // mock 返回数据

mock ajax

import ajax from './utils/ajax/ajax'

jest.mock('./utils/ajax/ajax');

test('should mock', async () => {

ajax.get.mockResolvedValue({ data: { data: [], code: 200 } }); // 模拟数据

const data = await loadTestData();

expect(data.data).toEqual([]);

});

 类似资料: