Skip to content

Механизм обнаружения файлов bun test определяет, какие файлы запускать как тесты. Понимание того, как это работает, помогает эффективно структурировать ваши тестовые файлы.

Логика обнаружения по умолчанию ​

По умолчанию bun test рекурсивно ищет в каталоге проекта файлы, соответствующие определённым шаблонам:

  • *.test.{js|jsx|ts|tsx} — Файлы, оканчивающиеся на .test.js, .test.jsx, .test.ts или .test.tsx
  • *_test.{js|jsx|ts|tsx} — Файлы, оканчивающиеся на _test.js, _test.jsx, _test.ts или _test.tsx
  • *.spec.{js|jsx|ts|tsx} — Файлы, оканчивающиеся на .spec.js, .spec.jsx, .spec.ts или .spec.tsx
  • *_spec.{js|jsx|ts|tsx} — Файлы, оканчивающиеся на _spec.js, _spec.jsx, _spec.ts или _spec.tsx

Исключения ​

По умолчанию Bun test игнорирует:

  • Каталоги node_modules
  • Скрытые каталоги (начинающиеся с точки .)
  • Файлы, которые не имеют расширений, подобных JavaScript (на основе доступных загрузчиков)

Настройка обнаружения тестов ​

Позиционные аргументы как фильтры ​

Вы можете отфильтровать, какие тестовые файлы запускаются, передав дополнительные позиционные аргументы в bun test:

bash
bun test <filter> <filter> ...

Будет запущен любой тестовый файл, путь которого содержит один из фильтров. Эти фильтры являются простыми сопоставлениями подстрок, а не glob-шаблонами.

Например, для запуска всех тестов в каталоге utils:

bash
bun test utils

Это сопоставит файлы, такие как src/utils/string.test.ts и lib/utils/array_test.js.

Указание точных путей к файлам ​

Для запуска конкретного файла в средстве запуска тестов убедитесь, что путь начинается с ./ или /, чтобы отличить его от имени фильтра:

bash
bun test ./test/specific-file.test.ts

Фильтрация по имени теста ​

Для фильтрации тестов по имени, а не по пути к файлу, используйте флаг -t/--test-name-pattern с regex-шаблоном:

sh
# запустить все тесты с "addition" в имени
bun test --test-name-pattern addition

Шаблон сопоставляется с конкатенированной строкой имени теста, к которому добавлены метки всех его родительских блоков describe, разделённых пробелами. Например, тест, определённый как:

math.test.ts
ts
describe("Math", () => {
  describe("operations", () => {
    test("should add correctly", () => {
      // ...
    });
  });
});

Будет сопоставлен со строкой "Math operations should add correctly".

Изменение корневого каталога ​

По умолчанию Bun ищет тестовые файлы, начиная с текущего рабочего каталога. Вы можете изменить это с помощью опции root в вашем bunfig.toml:

bunfig.toml
toml
[test]
root = "src"  # Сканировать тесты только в каталоге src

Порядок выполнения ​

Тесты выполняются в следующем порядке:

  1. Тестовые файлы выполняются последовательно (не параллельно)
  2. Внутри каждого файла тесты выполняются последовательно в порядке их определения

Bun от www.bunjs.com.cn