Skip to content
Vitest 0
Main Navigation GuidaAPIConfigurazioneAvanzato
1.6.1
0.34.6

Italiano

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

Italiano

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

Aspetto

Sidebar Navigation

Guida

Perché Vitest

Introduzione

Funzionalità

Spazio di lavoro

Interfaccia a riga di comando

Filtro dei test

Coverage

Snapshot

Mocking

Test dei tipi

Interfaccia Utente di Vitest

Modalità Browser (sperimentale)

Test nel codice sorgente

Contesto del Test

Ambienti di Test

Estensione dei Matchers

Integrazione con gli IDE

Debugging

Confronti con altri Test Runner

Guida alla migrazione

Errori Frequenti

API

Riferimento API Test

Funzioni Mock

Vi

expect

expectTypeOf

assertType

Configurazione

Configurazione di Vitest

In questa pagina

Spazio di lavoro ​

Vitest offre supporto integrato per le monorepo tramite un file di configurazione dello spazio di lavoro. Puoi creare uno spazio di lavoro per definire le configurazioni dei tuoi progetti.

Definizione di uno spazio di lavoro ​

Uno spazio di lavoro deve avere un file vitest.workspace o vitest.projects nella sua cartella principale (nella stessa cartella del tuo file di configurazione, se presente). Vitest supporta le estensioni ts/js/json per questo file.

Il file di configurazione dello spazio di lavoro deve avere un'esportazione predefinita contenente un elenco di file o pattern glob che fanno riferimento ai tuoi progetti. Ad esempio, se hai una cartella chiamata packages contenente i tuoi progetti, puoi definire uno spazio di lavoro con questo file di configurazione:

ts
export default ['packages/*'];

Vitest considererà ogni cartella in packages come un progetto separato, anche se non contiene un file di configurazione.

WARNING

Vitest non considererà la configurazione radice come un progetto dello spazio di lavoro (quindi non eseguirà i test specificati in include) a meno che non sia specificato in questa configurazione.

Puoi anche fare riferimento ai progetti utilizzando i loro file di configurazione:

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

Questo pattern includerà solo i progetti che hanno un file vitest.config contenente e2e o unit prima dell'estensione.

WARNING

Se fai riferimento a nomi di file con pattern glob, assicurati che il tuo file di configurazione inizi con vite.config o vitest.config. Altrimenti Vitest ignorerà il file.

Puoi anche definire i progetti utilizzando la configurazione inline. Il file dello spazio di lavoro supporta l'uso di entrambe le sintassi contemporaneamente.

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

// defineWorkspace offre un'ottima esperienza di sviluppo con suggerimenti sui tipi
export default defineWorkspace([
  'packages/*',
  {
    // aggiungi la proprietà `extends` per unire due configurazioni
    extends: './vite.config.js',
    test: {
      include: ['tests/**/*.{browser}.test.{ts,js}'],
      // è consigliabile definire un nome quando si utilizzano configurazioni inline
      name: 'happy-dom',
      environment: 'happy-dom',
    },
  },
  {
    test: {
      include: ['tests/**/*.{node}.test.{ts,js}'],
      name: 'node',
      environment: 'node',
    },
  },
]);

WARNING

Tutti i progetti devono avere nomi univoci. Altrimenti, Vitest genererà un errore. Se non fornisci un nome all'interno della configurazione inline, Vitest assegnerà un numero. Se non fornisci un nome all'interno di una configurazione di progetto definita con la sintassi glob, Vitest utilizzerà il nome della directory come predefinito.

Se non utilizzi configurazioni inline, puoi semplicemente creare un piccolo file JSON nella tua directory principale:

json
["packages/*"]

I progetti dello spazio di lavoro non supportano tutte le proprietà di configurazione. Per una maggiore sicurezza dei tipi, usa defineProject invece del metodo defineConfig all'interno dei file di configurazione del progetto:

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

export default defineProject({
  test: {
    environment: 'jsdom',
    // "reporters" non è supportato in una configurazione di progetto,
    // quindi genererà un errore
    reporters: ['json'],
  },
});

Configurazione ​

Nessuna delle opzioni di configurazione viene ereditata dal file di configurazione di livello radice. Puoi creare un file di configurazione condiviso e unirlo manualmente alla configurazione del progetto:

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

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

Inoltre, alcune opzioni di configurazione non sono consentite in una configurazione di progetto. In particolare:

  • coverage: la copertura viene eseguita per l'intero spazio di lavoro
  • reporters: possono essere supportati solo i reporter a livello della cartella principale
  • resolveSnapshotPath: viene rispettato solo il resolver a livello della cartella principale
  • tutte le altre opzioni che non influiscono sui test runner

TIP

Tutte le opzioni di configurazione che non sono supportate all'interno di una configurazione di progetto hanno il segno * accanto a loro nella pagina "Config".

Copertura ​

La copertura per i progetti dello spazio di lavoro è disponibile senza configurazione aggiuntiva. Tuttavia, se hai abilitato l'opzione all e utilizzi estensioni non convenzionali in alcuni dei tuoi progetti, dovrai avere un plugin che gestisca questa estensione nel tuo file di configurazione principale.

Ad esempio, se hai un pacchetto che utilizza file .vue e ha il suo file di configurazione, ma alcuni dei file non vengono importati nei tuoi test, la copertura fallirà tentando di analizzare l'utilizzo di file non utilizzati, perché si basa sulla configurazione principale anziché su quella del progetto.

Pager
Pagina precedenteFunzionalità
Pagina successivaInterfaccia a riga di comando

Rilasciato sotto la licenza MIT.

Copyright (c) 2024 Mithril Contributors

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

Rilasciato sotto la licenza MIT.

Copyright (c) 2024 Mithril Contributors