Skip to content
Vitest 1
Main Navigation GuiaAPIConfiguraçãoAvançado
1.6.1
0.34.6

Português – Brasil

English
简体中文
繁體中文
Español
Français
Русский
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Português – Brasil

English
简体中文
繁體中文
Español
Français
Русский
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Aparência

Sidebar Navigation

Guia

Por que Vitest

Primeiros Passos

Recursos

Workspace

Interface de Linha de Comando

Filtrando Testes

Reporters

Cobertura

Snapshot

Mocking

Testando Tipos

Vitest UI

Modo Navegador

Testes no Código Fonte

Contexto de Teste

Ambiente de Teste

Expandindo Matchers

Integrações de IDE

Depuração

Comparações com Outros Executores de Teste

Guia de Migração

Erros Comuns

Otimizando o Desempenho

API

Referência da API de Teste

Funções Mock

Vi

expect

expectTypeOf

assert

assertType

Configuração

Gerenciando o Arquivo de Configuração do Vitest

Configurando o Vitest

Nesta página

Workspace ​

Projeto de Exemplo

GitHub - Executar Online

O Vitest oferece suporte integrado para monorepos através de um arquivo de configuração de workspace. Você pode criar um workspace para definir as configurações dos seus projetos.

Definindo um Workspace ​

Um workspace deve ter um arquivo vitest.workspace ou vitest.projects em sua raiz (na mesma pasta do seu arquivo de configuração principal, se você tiver um). O Vitest suporta extensões ts/js/json para este arquivo.

O arquivo de configuração do workspace deve exportar por padrão uma lista de arquivos ou padrões globais que referenciam seus projetos. Por exemplo, se você tiver uma pasta chamada packages que contém seus projetos, você pode definir um workspace com o seguinte arquivo de configuração:

ts
export default ['packages/*'];

O Vitest tratará cada pasta em packages como um projeto separado, mesmo que não possua um arquivo de configuração individual.

WARNING

O Vitest não considerará a configuração raiz como um projeto de workspace (portanto, não executará os testes especificados em include), a menos que ela seja explicitamente especificada nesta configuração do workspace.

Você também pode referenciar projetos através de seus arquivos de configuração:

ts
export default ['packages/*/vitest.config.{e2e,unit}.ts'];

Este padrão incluirá apenas projetos que possuam um arquivo vitest.config com e2e ou unit antes da extensão.

WARNING

Se você estiver referenciando arquivos usando padrões glob, certifique-se de que o nome do arquivo de configuração comece com vite.config ou vitest.config. Caso contrário, o Vitest o ignorará.

Você também pode definir projetos com configuração inline. O arquivo de workspace suporta o uso de ambas as sintaxes simultaneamente.

ts
import { defineWorkspace } from 'vitest/config';

// defineWorkspace oferece uma boa experiência de desenvolvimento com type hinting
export default defineWorkspace([
  'packages/*',
  {
    // adicione "extends" para combinar duas configurações
    extends: './vite.config.js',
    test: {
      include: ['tests/**/*.{browser}.test.{ts,js}'],
      // recomenda-se definir um nome ao usar configurações inline
      name: 'happy-dom',
      environment: 'happy-dom',
    },
  },
  {
    test: {
      include: ['tests/**/*.{node}.test.{ts,js}'],
      name: 'node',
      environment: 'node',
    },
  },
]);

WARNING

Todos os projetos devem ter nomes únicos. Caso contrário, o Vitest lançará um erro. Se você não fornecer um nome dentro da configuração inline, o Vitest atribuirá um número automaticamente. Se você não fornecer um nome dentro de uma configuração de projeto definida com a sintaxe glob, o Vitest usará o nome do diretório como padrão.

Se você não precisa de configurações inline, você pode simplesmente criar um pequeno arquivo JSON no seu diretório raiz:

json
["packages/*"]

Projetos de workspace não suportam todas as propriedades de configuração. Para garantir a tipagem correta, use o método defineProject em vez do método defineConfig dentro dos arquivos de configuração do projeto:

ts
import { defineProject } from 'vitest/config';

export default defineProject({
  test: {
    environment: 'jsdom',
    // "reporters" não é suportado em uma configuração de projeto,
    // então um erro será exibido
    reporters: ['json'],
  },
});

Executando testes ​

Para executar os testes dentro do workspace, defina um script no seu package.json raiz:

json
{
  "scripts": {
    "test": "vitest"
  }
}

Agora os testes podem ser executados usando seu gerenciador de pacotes:

bash
npm run test
bash
yarn test
bash
pnpm run test
bash
bun test

Se você precisar executar os testes apenas dentro de um único projeto, use a opção --project da CLI:

bash
npm run test --project e2e

TIP

A opção da CLI --project pode ser usada várias vezes para filtrar múltiplos projetos:

bash
npm run test --project e2e --project unit

Configuração ​

Nenhuma das opções de configuração é herdada do arquivo de configuração de nível raiz. Você pode criar um arquivo de configuração compartilhado e combiná-lo com a configuração do projeto manualmente:

ts
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';

export default mergeConfig(
  configShared,
  defineProject({
    test: {
      environment: 'jsdom',
    },
  })
);

Além disso, algumas das opções de configuração não são permitidas em uma configuração de projeto. Principalmente:

  • coverage: o coverage é feito para todo o workspace
  • reporters: apenas reporters de nível raiz são suportados
  • resolveSnapshotPath: apenas o resolver de nível raiz é respeitado
  • todas as outras opções que não afetam os runners de teste

TIP

Todas as opções de configuração que não são suportadas dentro de uma configuração de projeto têm o sinal * próximo a elas na página "Config".

Coverage ​

O coverage para projetos de workspace funciona sem configuração adicional. Mas, se você tiver a opção all habilitada e usar extensões não convencionais em alguns de seus projetos, você precisará ter um plugin que lide com essa extensão no seu arquivo de configuração raiz.

Por exemplo, se você tiver um pacote que usa arquivos Vue e ele tiver seu próprio arquivo de configuração, mas alguns dos arquivos não forem importados em seus testes, o coverage falhará ao tentar analisar o uso de arquivos não utilizados, porque ele depende da configuração raiz em vez da configuração do projeto.

Pager
AnteriorRecursos
PróximoInterface de Linha de Comando

Distribuído sob a Licença MIT.

Copyright (c) 2024 Mithril Contributors

https://v1.vitest.dev/guide/workspace

Distribuído sob a Licença MIT.

Copyright (c) 2024 Mithril Contributors