Skip to content

Il meccanismo di scoperta dei file di bun test determina quali file eseguire come test. Capire come funziona ti aiuta a strutturare i tuoi file di test in modo efficace.

Logica di Scoperta Predefinita

Di default, bun test cerca ricorsivamente nella directory del progetto i file che corrispondono a pattern specifici:

  • *.test.{js|jsx|ts|tsx} - File che terminano con .test.js, .test.jsx, .test.ts o .test.tsx
  • *_test.{js|jsx|ts|tsx} - File che terminano con _test.js, _test.jsx, _test.ts o _test.tsx
  • *.spec.{js|jsx|ts|tsx} - File che terminano con .spec.js, .spec.jsx, .spec.ts o .spec.tsx
  • *_spec.{js|jsx|ts|tsx} - File che terminano con _spec.js, _spec.jsx, _spec.ts o _spec.tsx

Esclusioni

Di default, Bun test ignora:

  • Directory node_modules
  • Directory nascoste (quelle che iniziano con un punto .)
  • File che non hanno estensioni JavaScript-like (basati sui loader disponibili)

Personalizzare la Scoperta dei Test

Argomenti Posizionali come Filtri

Puoi filtrare quali file di test eseguire passando argomenti posizionali aggiuntivi a bun test:

bash
bun test <filtro> <filtro> ...

Qualsiasi file di test con un percorso che contiene uno dei filtri sara eseguito. Questi filtri sono semplici corrispondenze di sottostringhe, non pattern glob.

Ad esempio, per eseguire tutti i test in una directory utils:

bash
bun test utils

Questo corrisponderebbe a file come src/utils/string.test.ts e lib/utils/array_test.js.

Specificare Percorsi File Esatti

Per eseguire un file specifico nel test runner, assicurati che il percorso inizi con ./ o / per distinguerlo da un nome di filtro:

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

Filtrare per Nome del Test

Per filtrare i test per nome piuttosto che per percorso file, usa il flag -t/--test-name-pattern con un pattern regex:

sh
# esegui tutti i test con "addition" nel nome
bun test --test-name-pattern addition

Il pattern viene confrontato con una stringa concatenata del nome del test preceduto dalle etichette di tutti i suoi blocchi describe padre, separate da spazi. Ad esempio, un test definito come:

math.test.ts
ts
describe("Math", () => {
  describe("operations", () => {
    test("dovrebbe sommare correttamente", () => {
      // ...
    });
  });
});

Sarebbe confrontato con la stringa "Math operations dovrebbe sommare correttamente".

Cambiare la Directory Root

Di default, Bun cerca i file di test a partire dalla directory di lavoro corrente. Puoi cambiare questo con l'opzione root nel tuo bunfig.toml:

bunfig.toml
toml
[test]
root = "src"  # Scansiona solo i test nella directory src

Ordine di Esecuzione

I test vengono eseguiti nel seguente ordine:

  1. I file di test vengono eseguiti sequenzialmente (non in parallelo)
  2. All'interno di ogni file, i test vengono eseguiti sequenzialmente in base al loro ordine di definizione

Bun a cura di www.bunjs.com.cn