Jest 测试ES类

我们介绍了使用Jest 测试函数,测试异步函数,Mock 函数,那么怎么测试class呢?

引入

首先,我们创建一个class

javascript 复制代码
// 这里,我们写一个类
class util {
    af(a, b) {
        console.log(a, b)
    }

    bf(a, b) {
        console.log(a, b)
    }

    cf(a, b) {
        console.log(a, b)
    }
}


export default util

然后,我们按照以前的经验进行测试

要注意的是,我们这个测试要在所有用例前,实例化util

那么就会是

javascript 复制代码
import Util from "./main"

let util = null;

beforeAll(() => {
    util = new Util()
})

it("测试类", () => {
    expect(util.af("akun", "akun02")).toEqual("akunakun02")
})

正如你看到的, 我们这样也是可以进行测试的,但是,如果这个class里边的方法都异常的复杂,那么你的测试效率是很低的,所以我们接下载要使用Jest 的mock class

Mock

我们创建一个媒介函数,用来调用实例化和使用我们class的方法

javascript 复制代码
// 导入我们自己写的
import Util from "./main"

const demoFunc = (a, b) => {
    // 实例化
    let util = new Util();
    util.af('akun','akun02')
    util.bf('akun','akun02')
}


export default demoFunc

然后,我们进行mock,和测试

javascript 复制代码
// 模拟类  他一看是类,就自动转为mock fn
jest.mock("./main")

import Util from "./main"

import demoFunc from "./MockClass";


it("测试", () => {
    demoFunc();
    // 检查 Util 是否被实例化
    expect(Util).toHaveBeenCalledTimes(1);

    // 查看 mock 类信息
    console.log(Util.mock)  // 查看 mock 类结构
    console.log(Util.mock.instances[0])  // 查看第一次实例化的对象
    expect(Util.mock.instances[0].af).toHaveBeenCalled()
    expect(Util.mock.instances[0].bf).toHaveBeenCalled()
})

在这里,我们使用Jest mock的时候,不论你把这句话放在哪里,他始终会被提升到第一行执行

我们的测试函数也很简单,调用我们媒介函数,然后测试我们的mock的Util是否被执行

在这里要注意,toHaveBeenCalledTimes等API仅使用于Jest Mock的函数,自己写的不算

那这里为什么可以使用呢?

因为,我们的mock会把你的util进行处理,他一看你的文件里边是一个class,那么他就会把所有的变为Jest.fn(),模拟函数

所以你才可以使用API

所以Jest Mock Class 就是这样了,如果你对他的mock不满意,可以创建_Mock_文件夹,创建util.js文件,自己写Mock

相关推荐
安冬的码畜日常1 分钟前
【工欲善其事】深入理解 Node.js 带并发上限的异步任务批量执行逻辑
javascript·设计模式·node.js·ai编程·异步编程·并发执行
meilindehuzi_a1 小时前
Vue3组件样式隔离与组件通信实战:从 scoped、props 校验到记事本应用
前端·javascript·vue.js
LaughingZhu1 小时前
Product Hunt 每日热榜 | 2026-07-28
前端·神经网络·react.js·搜索引擎·前端框架
陈随易8 小时前
在 VSCode 里,把项目一键部署到服务器
前端·后端·程序员
Highcharts.js9 小时前
教程:基于 React + Highcharts 构建一个单页应用程序、按需数据拉取与图表渲染
开发语言·前端·数据结构·react.js·前端框架·highcharts·页面应用
To_OC9 小时前
我被 useState 坑了两次之后,终于把它的脾气摸透了
前端·javascript·react.js
鱼樱前端9 小时前
我用 Claude Code 后,编码效率翻 3 倍。但更值钱的是别的。
前端·后端·ai编程
_lucas10 小时前
给知识库网站接入AI问答
前端·ai编程·全栈
前端糕手10 小时前
前端面试题大全:JavaScript + Vue3 + React + TypeScript + 工程化 + 性能优化
前端
我不叫武11 小时前
一个用 Rust 写的离线编码查询桌面工具
前端