Bun

生命周期钩子

测试运行器支持以下生命周期钩子。这对于加载测试夹具、模拟数据和配置测试环境非常有用。

钩子说明
beforeAll在所有测试之前运行一次。
beforeEach在每个测试之前运行。
afterEach在每个测试之后运行。
afterAll在所有测试之后运行一次。

使用 beforeEachafterEach 执行每个测试的设置和拆除逻辑。

import { beforeEach, afterEach } from "bun:test";

beforeEach(() => {
  console.log("running test.");
});

afterEach(() => {
  console.log("done with test.");
});

// tests...

使用 beforeAllafterAll 执行每个作用域的设置和拆除逻辑。作用域 由钩子定义的位置决定。

将钩子作用域限定到特定的 describe

import { describe, beforeAll } from "bun:test";

describe("test group", () => {
  beforeAll(() => {
    // setup
  });

  // tests...
});

将钩子作用域限定到测试文件

import { describe, beforeAll } from "bun:test";

beforeAll(() => {
  // setup
});

describe("test group", () => {
  // tests...
});

要将钩子作用域限定到整个多文件测试运行,请在单独的文件中定义钩子。

setup.ts
import { beforeAll, afterAll } from "bun:test";

beforeAll(() => {
  // global setup
});

afterAll(() => {
  // global teardown
});

然后使用 --preload 在任何测试文件之前运行设置脚本。

$ bun test --preload ./setup.ts

为了避免每次运行测试时都要键入 --preload,可以将其添加到您的 bunfig.toml

[test]
preload = ["./setup.ts"]