API Avanzate
WARNING
Questa guida elenca le API avanzate per eseguire i test tramite uno script Node.js. Se desideri semplicemente eseguire i test, probabilmente non ne hai bisogno. È principalmente utilizzata dagli autori di librerie.
Puoi importare qualsiasi metodo dall'entry-point vitest/node.
startVitest
function startVitest(
mode: VitestRunMode,
cliFilters: string[] = [],
options: CliOptions = {},
viteOverrides?: ViteUserConfig,
vitestOptions?: VitestOptions
): Promise<Vitest>;Puoi iniziare a eseguire i test Vitest usando la sua API Node:
import { startVitest } from 'vitest/node';
const vitest = await startVitest('test');
await vitest.close();La funzione startVitest restituisce un'istanza Vitest se i test possono essere avviati.
Se la modalità watch non è abilitata, Vitest chiamerà automaticamente il metodo close.
Se la modalità watch è abilitata e il terminale supporta TTY, Vitest registrerà le scorciatoie della console.
Puoi passare una lista di filtri come secondo argomento. Vitest eseguirà solo i test i cui percorsi file contengono almeno una delle stringhe fornite.
Inoltre, puoi usare il terzo argomento per passare gli argomenti della CLI, che sovrascriveranno qualsiasi opzione di configurazione dei test. In alternativa, puoi passare la configurazione Vite completa come quarto argomento, che avrà la precedenza su qualsiasi altra opzione definita dall'utente.
Dopo aver eseguito i test, puoi ottenere i risultati tramite l'API state.getTestModules:
import type { TestModule } from 'vitest/node';
const vitest = await startVitest('test');
console.log(vitest.state.getTestModules()); // [TestModule]TIP
La guida "Esecuzione dei Test" contiene un esempio pratico.
createVitest
function createVitest(
mode: VitestRunMode,
options: CliOptions,
viteOverrides: ViteUserConfig = {},
vitestOptions: VitestOptions = {}
): Promise<Vitest>;Puoi creare un'istanza Vitest usando la funzione createVitest. Restituisce la stessa istanza Vitest di startVitest, ma non avvia i test né convalida i pacchetti installati.
import { createVitest } from 'vitest/node';
const vitest = await createVitest('test', {
watch: false,
});TIP
La guida "Esecuzione dei Test" contiene un esempio pratico.
resolveConfig
function resolveConfig(
options: UserConfig = {},
viteOverrides: ViteUserConfig = {}
): Promise<{
vitestConfig: ResolvedConfig;
viteConfig: ResolvedViteConfig;
}>;Questo metodo permette di risolvere la configurazione con parametri personalizzati. Se non vengono forniti parametri, la radice sarà process.cwd().
import { resolveConfig } from 'vitest/node';
// vitestConfig contiene solo le proprietà "test" risolte
const { vitestConfig, viteConfig } = await resolveConfig({
mode: 'custom',
configFile: false,
resolve: {
conditions: ['custom'],
},
test: {
setupFiles: ['/my-setup-file.js'],
pool: 'threads',
},
});INFO
A causa di come funziona createServer di Vite, Vitest deve effettuare la risoluzione della configurazione durante l'hook configResolve del plugin. Pertanto, questo metodo non è effettivamente utilizzato internamente ed è esposto esclusivamente come API pubblica.
Se passi la configurazione alle API startVitest o createVitest, Vitest risolverà comunque la configurazione nuovamente.
WARNING
resolveConfig non risolve i projects. Per risolvere le configurazioni dei progetti, Vitest ha bisogno di un server Vite stabilito.
Nota inoltre che viteConfig.test non verrà risolto completamente. Se hai bisogno della configurazione Vitest, usa vitestConfig invece.
parseCLI
function parseCLI(
argv: string | string[],
config: CliParseOptions = {}
): {
filter: string[];
options: CliOptions;
};Puoi utilizzare questo metodo per elaborare gli argomenti della CLI. Accetta una stringa (dove i parametri sono separati da un singolo spazio) o un array di stringhe di argomenti CLI nello stesso formato usato dalla CLI di Vitest. Restituisce un filtro e le opzioni che puoi successivamente passare ai metodi createVitest o startVitest.
import { parseCLI } from 'vitest/node';
const result = parseCLI('vitest ./files.ts --coverage --browser=chrome');
result.options;
// {
// coverage: { enabled: true },
// browser: { name: 'chrome', enabled: true }
// }
result.filter;
// ['./files.ts']