Skip to content

O mecanismo de descoberta de arquivos do bun test determina quais arquivos executar como testes. Entender como funciona ajuda você a estruturar seus arquivos de teste de forma eficaz.

Lógica de Descoberta Padrão

Por padrão, bun test pesquisa recursivamente o diretório do projeto por arquivos que correspondem a padrões específicos:

  • *.test.{js|jsx|ts|tsx} - Arquivos terminando com .test.js, .test.jsx, .test.ts ou .test.tsx
  • *_test.{js|jsx|ts|tsx} - Arquivos terminando com _test.js, _test.jsx, _test.ts ou _test.tsx
  • *.spec.{js|jsx|ts|tsx} - Arquivos terminando com .spec.js, .spec.jsx, .spec.ts ou .spec.tsx
  • *_spec.{js|jsx|ts|tsx} - Arquivos terminando com _spec.js, _spec.jsx, _spec.ts ou _spec.tsx

Exclusões

Por padrão, o teste do Bun ignora:

  • Diretórios node_modules
  • Diretórios ocultos (aqueles começando com um ponto .)
  • Arquivos que não têm extensões semelhantes a JavaScript (com base nos loaders disponíveis)

Personalizando a Descoberta de Testes

Argumentos de Posição como Filtros

Você pode filtrar quais arquivos de teste são executados passando argumentos posicionais adicionais para bun test:

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

Qualquer arquivo de teste com um caminho que contenha um dos filtros será executado. Estes filtros são correspondências de substring simples, não padrões glob.

Por exemplo, para executar todos os testes em um diretório utils:

bash
bun test utils

Isso corresponderia a arquivos como src/utils/string.test.ts e lib/utils/array_test.js.

Especificando Caminhos de Arquivo Exatos

Para executar um arquivo específico no executor de teste, certifique-se de que o caminho começa com ./ ou / para distingui-lo de um nome de filtro:

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

Filtrar por Nome de Teste

Para filtrar testes por nome em vez de caminho de arquivo, use a flag -t/--test-name-pattern com um padrão regex:

sh
# executar todos os testes com "adição" no nome
bun test --test-name-pattern adicao

O padrão é comparado com uma string concatenada do nome do teste precedido pelos rótulos de todos os seus blocos describe pai, separados por espaços. Por exemplo, um teste definido como:

math.test.ts
ts
describe("Matemática", () => {
  describe("operações", () => {
    test("deve somar corretamente", () => {
      // ...
    });
  });
});

Seria comparado com a string "Matemática operações deve somar corretamente".

Alterando o Diretório Raiz

Por padrão, o Bun procura arquivos de teste a partir do diretório de trabalho atual. Você pode alterar isso com a opção root no seu bunfig.toml:

bunfig.toml
toml
[test]
root = "src"  # Apenas varrer por testes no diretório src

Ordem de Execução

Os testes são executados na seguinte ordem:

  1. Arquivos de teste são executados sequencialmente (não em paralelo)
  2. Dentro de cada arquivo, os testes são executados sequencialmente com base na ordem de definição

Bun by www.bunjs.com.cn edit