Skip to content
Vitest 0
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

Cobertura

Snapshot

Mocking

Testando Tipos de Dados

Vitest UI

Modo Navegador (experimental)

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

API

Referência da API de Teste

Funções Mock

Vi

expect

expectTypeOf

assertType

Configuração

Configurando o Vitest

Nesta página

Workspace ​

O Vitest oferece suporte nativo a monorepositórios 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 as 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 (glob patterns) que referenciam seus projetos. Por exemplo, se você tiver uma pasta chamada packages contendo seus projetos, você pode definir um workspace com o seguinte arquivo de configuração:

ts
export default ['packages/*'];

O Vitest considerará cada pasta dentro de 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 do workspace (portanto, não executará os testes especificados em include), a menos que ela seja explicitamente incluída nesta configuração do workspace.

Você também pode referenciar projetos através dos 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 cujo nome contenha e2e ou unit antes da extensão.

WARNING

Se você estiver referenciando arquivos usando padrões glob, certifique-se de que o nome do seu 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ções 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 (DX) com dicas de tipo
export default defineWorkspace([
  'packages/*',
  {
    // adicione "extends" para mesclar 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 distintos. Caso contrário, o Vitest retornará um erro. Se você não fornecer um nome dentro de uma 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 uma melhor segurança de tipos, 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 configurações de projeto,
    // então mostrará um erro
    reporters: ['json'],
  },
});

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 mesclá-lo com a configuração do projeto individualmente:

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 opções de configuração não são permitidas em configurações de projeto. As principais são:

  • coverage: a cobertura é feita para todo o workspace
  • reporters: apenas os reporters definidos no nível raiz são suportados
  • resolveSnapshotPath: apenas o resolver definido no nível raiz é considerado
  • todas as outras opções que não afetam os executores 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 * ao lado delas na página "Config".

Cobertura de Código ​

A cobertura de código para projetos de workspace funciona sem configuração adicional. No entanto, se você tiver a opção all habilitada e usar extensões de arquivo não convencionais em alguns dos seus projetos, você precisará de um plugin que suporte essas extensões no seu arquivo de configuração raiz.

Por exemplo, se você tiver um pacote que usa arquivos Vue e ele tem seu próprio arquivo de configuração, mas se alguns desses arquivos não forem importados nos seus testes, a cobertura de código falhará ao tentar analisar o uso de arquivos não utilizados, pois depende da configuração raiz e não da configuração do projeto individual.

Pager
AnteriorRecursos
PróximoInterface de Linha de Comando

Distribuído sob a Licença MIT.

Copyright (c) 2024 Mithril Contributors

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

Distribuído sob a Licença MIT.

Copyright (c) 2024 Mithril Contributors