Механизм обнаружения файлов 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:
bun test <filter> <filter> ...Будет запущен любой тестовый файл, путь которого содержит один из фильтров. Эти фильтры являются простыми сопоставлениями подстрок, а не glob-шаблонами.
Например, для запуска всех тестов в каталоге utils:
bun test utilsЭто сопоставит файлы, такие как src/utils/string.test.ts и lib/utils/array_test.js.
Указание точных путей к файлам
Для запуска конкретного файла в средстве запуска тестов убедитесь, что путь начинается с ./ или /, чтобы отличить его от имени фильтра:
bun test ./test/specific-file.test.tsФильтрация по имени теста
Для фильтрации тестов по имени, а не по пути к файлу, используйте флаг -t/--test-name-pattern с regex-шаблоном:
# запустить все тесты с "addition" в имени
bun test --test-name-pattern additionШаблон сопоставляется с конкатенированной строкой имени теста, к которому добавлены метки всех его родительских блоков describe, разделённых пробелами. Например, тест, определённый как:
describe("Math", () => {
describe("operations", () => {
test("should add correctly", () => {
// ...
});
});
});Будет сопоставлен со строкой "Math operations should add correctly".
Изменение корневого каталога
По умолчанию Bun ищет тестовые файлы, начиная с текущего рабочего каталога. Вы можете изменить это с помощью опции root в вашем bunfig.toml:
[test]
root = "src" # Сканировать тесты только в каталоге srcПорядок выполнения
Тесты выполняются в следующем порядке:
- Тестовые файлы выполняются последовательно (не параллельно)
- Внутри каждого файла тесты выполняются последовательно в порядке их определения