Skip to content

Le mécanisme de découverte de fichiers de bun test détermine quels fichiers exécuter en tant que tests. Comprendre son fonctionnement vous aide à structurer efficacement vos fichiers de test.

Logique de découverte par défaut

Par défaut, bun test recherche récursivement dans le répertoire du projet les fichiers qui correspondent à des motifs spécifiques :

  • *.test.{js|jsx|ts|tsx} - Fichiers se terminant par .test.js, .test.jsx, .test.ts ou .test.tsx
  • *_test.{js|jsx|ts|tsx} - Fichiers se terminant par _test.js, _test.jsx, _test.ts ou _test.tsx
  • *.spec.{js|jsx|ts|tsx} - Fichiers se terminant par .spec.js, .spec.jsx, .spec.ts ou .spec.tsx
  • *_spec.{js|jsx|ts|tsx} - Fichiers se terminant par _spec.js, _spec.jsx, _spec.ts ou _spec.tsx

Exclusions

Par défaut, Bun test ignore :

  • Les répertoires node_modules
  • Les répertoires cachés (ceux commençant par un point .)
  • Les fichiers qui n'ont pas d'extensions de type JavaScript (basé sur les loaders disponibles)

Personnaliser la découverte des tests

Arguments de position comme filtres

Vous pouvez filtrer les fichiers de test à exécuter en passant des arguments de position supplémentaires à bun test :

bash
bun test <filtre> <filtre> ...

Tout fichier de test dont le chemin contient l'un des filtres sera exécuté. Ces filtres sont de simples correspondances de sous-chaînes, pas des motifs glob.

Par exemple, pour exécuter tous les tests dans un répertoire utils :

bash
bun test utils

Cela correspondrait à des fichiers comme src/utils/string.test.ts et lib/utils/array_test.js.

Spécifier des chemins de fichiers exacts

Pour exécuter un fichier spécifique dans le runner de test, assurez-vous que le chemin commence par ./ ou / pour le distinguer d'un nom de filtre :

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

Filtrer par nom de test

Pour filtrer les tests par nom plutôt que par chemin de fichier, utilisez le drapeau -t/--test-name-pattern avec un motif regex :

sh
# exécuter tous les tests avec "addition" dans le nom
bun test --test-name-pattern addition

Le motif est comparé à une chaîne concaténée du nom du test précédé des étiquettes de tous ses blocs describe parents, séparés par des espaces. Par exemple, un test défini comme :

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

Serait comparé à la chaîne "Math operations should add correctly".

Changer le répertoire racine

Par défaut, Bun recherche les fichiers de test à partir du répertoire de travail actuel. Vous pouvez changer cela avec l'option root dans votre bunfig.toml :

toml
[test]
root = "src"  # Balayer uniquement les tests dans le répertoire src

Ordre d'exécution

Les tests sont exécutés dans l'ordre suivant :

  1. Les fichiers de test sont exécutés séquentiellement (pas en parallèle)
  2. Dans chaque fichier, les tests s'exécutent séquentiellement selon leur ordre de définition

Bun édité par www.bunjs.com.cn