Bun имеет встроенный тестовый раннер с похожим на Jest API expect.
Для использования выполните команду bun test из каталога вашего проекта. Тестовый раннер рекурсивно найдёт все файлы в каталоге, соответствующие следующим шаблонам, и выполнит содержащиеся в них тесты.
*.test.{js|jsx|ts|tsx}
*_test.{js|jsx|ts|tsx}
*.spec.{js|jsx|ts|tsx}
*_spec.{js|jsx|ts|tsx}Вот как выглядит вывод типичного запуска тестов. В этом случае есть три тестовых файла (test.test.js, test2.test.js и test3.test.js), каждый из которых содержит по два теста (add и multiply).
bun testtest.test.js:
✓ add [0.87ms]
✓ multiply [0.02ms]
test2.test.js:
✓ add [0.72ms]
✓ multiply [0.01ms]
test3.test.js:
✓ add [0.54ms]
✓ multiply [0.01ms]
6 pass
0 fail
6 expect() calls
Ran 6 tests across 3 files. [9.00ms]Для запуска только определённых тестовых файлов передайте позициональный аргумент в bun test. Раннер будет выполнять только файлы, которые содержат этот аргумент в своём пути.
bun test test3test3.test.js:
✓ add [1.40ms]
✓ multiply [0.03ms]
2 pass
0 fail
2 expect() calls
Ran 2 tests across 1 files. [15.00ms]Все тесты имеют имя, определённое с помощью первого параметра функции test. Тесты также можно группировать в наборы с describe.
import { test, expect, describe } from "bun:test";
describe("математика", () => {
test("сложение", () => {
expect(2 + 2).toEqual(4);
});
test("умножение", () => {
expect(2 * 2).toEqual(4);
});
});Для фильтрации выполняемых тестов по имени используйте флаг -t/--test-name-pattern.
Добавление -t add запустит только тесты с "add" в имени. Это работает с именами тестов, определёнными с test, или именами наборов тестов, определёнными с describe.
bun test -t addtest.test.js:
✓ add [1.79ms]
» multiply
test2.test.js:
✓ add [2.30ms]
» multiply
test3.test.js:
✓ add [0.32ms]
» multiply
3 pass
3 skip
0 fail
3 expect() calls
Ran 6 tests across 3 files. [59.00ms]Смотрите Документация > Тестирование для полной документации о тестовом раннере.