Skip to content
Vitest 3
Main Navigation Guida & APIConfigurazioneModalità BrowserAPI avanzata
3.2.0
2.1.9
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

Introduzione

Perché Vitest

Per Iniziare

Caratteristiche

Configurazione di Vitest

API

Riferimento API di test

Funzioni Mock

Vi

expect

expectTypeOf

assert

assertType

Guida

Interfaccia a Riga di Comando

Filtro dei Test

Progetti di Test

Reporter

Copertura

Snapshot

Mocking

Parallelismo

Tipi di Test

Vitest UI

Test nel Codice Sorgente

Contesto di Test

Annotazioni dei Test

Ambiente di Test

Estensione dei Matcher

Integrazioni IDE

Debugging

Errori Comuni

Guida alla Migrazione

Migrazione a Vitest 3.0

Migrazione da Jest

Prestazioni

Profilazione delle prestazioni dei test

Ottimizzare le Prestazioni

Modalità Browser

API Avanzate

Confronto con Altri Test Runner

In questa pagina

Test nel Codice Sorgente ​

Vitest offre la possibilità di eseguire test direttamente all'interno del codice sorgente, affiancando l'implementazione, in modo analogo ai test dei moduli di Rust.

Questo approccio consente ai test di condividere lo stesso ambito (closure) delle implementazioni e di verificare stati privati senza la necessità di esportarli. Al contempo, favorisce un ciclo di feedback più rapido durante lo sviluppo.

WARNING

Questa guida illustra come scrivere test all'interno del codice sorgente. Se la tua esigenza è scrivere test in file separati, ti invitiamo a consultare la guida "Scrivere Test".

Configurazione ​

Per iniziare, aggiungi un blocco if (import.meta.vitest) alla fine del tuo file sorgente e inserisci i test al suo interno. Ad esempio:

ts
// L'implementazione
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0);
}

// Suite di test in-source
if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest;
  it('add', () => {
    expect(add()).toBe(0);
    expect(add(1)).toBe(1);
    expect(add(1, 2, 3)).toBe(6);
  });
}

Aggiorna la configurazione includeSource di Vitest per includere i file nella directory src/:

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

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'], 
  },
});

A questo punto, puoi avviare l'esecuzione dei test!

bash
$ npx vitest

Build per la Produzione ​

Per la build di produzione, è necessario configurare le opzioni define nel tuo file di configurazione, permettendo al bundler di eseguire il "dead code elimination" (eliminazione del codice morto). Ad esempio, con Vite:

ts
/// <reference types="vitest/config" />

import { defineConfig } from 'vite'

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'],
  },
  define: { 
    'import.meta.vitest': 'undefined', 
  }, 
})

Altri Bundler ​

unbuild
ts
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({
  replace: { 
    'import.meta.vitest': 'undefined', 
  }, 
  // other options
})

Maggiori informazioni: unbuild

Rollup
ts
import replace from '@rollup/plugin-replace'

export default {
  plugins: [
    replace({ 
      'import.meta.vitest': 'undefined', 
    }) 
  ],
  // other options
}

Maggiori informazioni: Rollup

TypeScript ​

Per abilitare il supporto TypeScript per import.meta.vitest, aggiungi vitest/importMeta al tuo tsconfig.json:

json
{
  "compilerOptions": {
    "types": [
      "vitest/importMeta"
    ]
  }
}

Per un esempio completo, consulta examples/in-source-test.

Note ​

Questa funzionalità è particolarmente utile per:

  • Test unitari di funzioni o utility di piccole dimensioni
  • Prototipazione
  • Asserzioni in linea

Si raccomanda di utilizzare file di test separati per scenari più complessi, come test di componenti o test E2E.

Pager
Pagina precedenteVitest UI
Pagina successivaContesto di Test

Rilasciato sotto la licenza MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/in-source

Rilasciato sotto la licenza MIT.

Copyright (c) 2021-Present Vitest Team