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, разделённых пробелами. Например, тест, определённый как:

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

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

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

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

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

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

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

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

Bun от www.bunjs.com.cn