进阶技巧
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("网络错误");
});