mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 02:48:50 +00:00
82 lines
1.7 KiB
Markdown
82 lines
1.7 KiB
Markdown
The test runner supports the following lifecycle hooks. This is useful for loading test fixtures, mocking data, and configuring the test environment.
|
|
|
|
| Hook | Description |
|
|
| ------------ | --------------------------- |
|
|
| `beforeAll` | Runs once before all tests. |
|
|
| `beforeEach` | Runs before each test. |
|
|
| `afterEach` | Runs after each test. |
|
|
| `afterAll` | Runs once after all tests. |
|
|
|
|
Perform per-test setup and teardown logic with `beforeEach` and `afterEach`.
|
|
|
|
```ts
|
|
import { beforeEach, afterEach } from "bun:test";
|
|
|
|
beforeEach(() => {
|
|
console.log("running test.");
|
|
});
|
|
|
|
afterEach(() => {
|
|
console.log("done with test.");
|
|
});
|
|
|
|
// tests...
|
|
```
|
|
|
|
Perform per-scope setup and teardown logic with `beforeAll` and `afterAll`. The _scope_ is determined by where the hook is defined.
|
|
|
|
To scope the hooks to a particular `describe` block:
|
|
|
|
```ts
|
|
import { describe, beforeAll } from "bun:test";
|
|
|
|
describe("test group", () => {
|
|
beforeAll(() => {
|
|
// setup
|
|
});
|
|
|
|
// tests...
|
|
});
|
|
```
|
|
|
|
To scope the hooks to a test file:
|
|
|
|
```ts
|
|
import { describe, beforeAll } from "bun:test";
|
|
|
|
beforeAll(() => {
|
|
// setup
|
|
});
|
|
|
|
describe("test group", () => {
|
|
// tests...
|
|
});
|
|
```
|
|
|
|
To scope the hooks to an entire multi-file test run, define the hooks in a separate file.
|
|
|
|
```ts#setup.ts
|
|
import { beforeAll, afterAll } from "bun:test";
|
|
|
|
beforeAll(() => {
|
|
// global setup
|
|
});
|
|
|
|
afterAll(() => {
|
|
// global teardown
|
|
});
|
|
```
|
|
|
|
Then use `--preload` to run the setup script before any test files.
|
|
|
|
```ts
|
|
$ bun test --preload ./setup.ts
|
|
```
|
|
|
|
To avoid typing `--preload` every time you run tests, it can be added to your `bunfig.toml`:
|
|
|
|
```toml
|
|
[test]
|
|
preload = ["./setup.ts"]
|
|
```
|