Z
ZHANK
进阶技巧

Jest 测试框架

Jest 单元测试、mock 模拟、异步测试、覆盖率报告

Jest 测试框架

Jest 是 JavaScript 最流行的测试框架——零配置、快照测试、mock 强大。

学完本章你将: 掌握 Jest 单元测试、mock 模拟、异步测试、覆盖率。


基本测试

javascript
// sum.js
export function sum(a, b) { return a + b; }

// sum.test.js
import { sum } from "./sum";

test("sum(1, 2) = 3", () => {
    expect(sum(1, 2)).toBe(3);
});

describe("sum 函数", () => {
    test("正数相加", () => expect(sum(2, 3)).toBe(5));
    test("负数相加", () => expect(sum(-1, -1)).toBe(-2));
});

Mock 模拟

javascript
// 模拟模块
jest.mock("./api");
import { fetchUser } from "./api";

test("模拟 API 调用", async () => {
    fetchUser.mockResolvedValue({ name: "小明" });
    const user = await fetchUser(1);
    expect(user.name).toBe("小明");
    expect(fetchUser).toHaveBeenCalledWith(1);
});

// 模拟函数
const mockFn = jest.fn();
mockFn.mockReturnValue(42);
console.log(mockFn());  // 42

异步测试

javascript
test("异步测试", async () => {
    const data = await fetchData();
    expect(data).toEqual({ ok: true });
});

test("reject 测试", async () => {
    await expect(fetchData()).rejects.toThrow("网络错误");
});