Skip to content
Vitest 2
Main Navigation GuideAPIConfigurationMode NavigateurAvancé
2.1.9
1.6.1
0.34.6

Français

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

Français

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

Apparence

Sidebar Navigation

API Node.js

Exécuteur de tests

Métadonnées des tâches

Étendre les reporters

Pool personnalisé

Sur cette page

API Node ​

WARNING

Vitest expose une API privée expérimentale. Les changements majeurs pourraient ne pas respecter SemVer. Veuillez fixer la version de Vitest lorsque vous l'utilisez.

startVitest ​

Vous pouvez démarrer les tests Vitest en utilisant son API Node :

js
import { startVitest } from 'vitest/node';

const vitest = await startVitest('test');

await vitest?.close();

La fonction startVitest retourne une instance Vitest si les tests peuvent être lancés avec succès. Elle retourne undefined dans l'un des cas suivants :

  • Vitest n'a pas trouvé le package vite (généralement installé avec Vitest).
  • Si la couverture est activée et que le mode d'exécution est "test", mais que le package de couverture n'est pas installé (@vitest/coverage-v8 ou @vitest/coverage-istanbul).
  • Si le package d'environnement n'est pas installé (jsdom/happy-dom/@edge-runtime/vm).

Si undefined est retourné ou si des tests échouent pendant l'exécution, Vitest affecte la valeur 1 à process.exitCode.

Si le mode de surveillance n'est pas activé, Vitest appellera la méthode close.

Si le mode watch est activé et que le terminal prend en charge TTY, Vitest enregistrera les raccourcis clavier.

Vous pouvez transmettre une liste de filtres comme deuxième argument. Vitest exécutera uniquement les tests dont le chemin de fichier contient au moins une des chaînes transmises.

De plus, vous pouvez utiliser le troisième argument pour transmettre des arguments CLI, qui prévaudront sur toutes les options de configuration de test.

Vous pouvez également transmettre la configuration Vite complète comme quatrième argument, qui aura priorité sur toutes les autres options définies par l'utilisateur.

Après avoir exécuté les tests, vous pouvez récupérer les résultats via l'API state.getFiles :

ts
const vitest = await startVitest('test');

console.log(vitest.state.getFiles()); // [{ type: 'file', ... }]

À partir de Vitest 2.1, il est conseillé d'utiliser l'API "Tâches reportées" avec state.getFiles. À l'avenir, Vitest retournera directement ces objets :

ts
const vitest = await startVitest('test');

const [fileTask] = vitest.state.getFiles();
const testFile = vitest.state.getReportedEntity(fileTask);

createVitest ​

Vous pouvez créer votre propre instance Vitest en utilisant la fonction createVitest. Elle retourne la même instance Vitest que startVitest, mais ne démarre pas les tests et ne valide pas la présence des paquets requis.

js
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test', {
  watch: false,
});

parseCLI ​

Vous pouvez utiliser cette méthode pour analyser les arguments de la ligne de commande (CLI). Elle accepte une chaîne (dans laquelle les arguments sont séparés par un simple espace) ou un tableau de chaînes d'arguments CLI, dans le même format que celui utilisé par Vitest CLI. Elle retourne un filtre et des options que vous pouvez ensuite transmettre aux méthodes createVitest ou startVitest.

ts
import { parseCLI } from 'vitest/node';

parseCLI('vitest ./files.ts --coverage --browser=chrome');

Vitest ​

L'instance Vitest requiert la définition du mode de test actuel. Ce peut être :

  • test lors de l'exécution des tests unitaires.
  • benchmark lors de l'exécution des benchmarks.

mode ​

test ​

Le mode test exécute uniquement les fonctions test ou it, et génère une erreur si bench est utilisé. Ce mode utilise les options include et exclude dans la configuration pour identifier les fichiers de test.

benchmark ​

Le mode Benchmark appelle les fonctions bench et lève une erreur s'il rencontre test ou it. Ce mode utilise les options benchmark.include et benchmark.exclude dans la configuration pour identifier les fichiers de benchmark.

start ​

Vous pouvez lancer les tests ou les benchmarks avec la méthode start. Vous pouvez passer un tableau de chaînes pour filtrer les fichiers de test.

provide ​

Vitest expose la méthode provide qui est un raccourci pour vitest.getCoreWorkspaceProject().provide. Cette méthode permet de transmettre des valeurs du processus principal aux tests. Toutes les valeurs sont vérifiées avec structuredClone avant d'être stockées, mais les valeurs elles-mêmes ne sont pas clonées.

Pour récupérer les valeurs dans le test, vous devez importer la méthode inject depuis le point d'entrée vitest.

ts
import { inject } from 'vitest';
const port = inject('wsPort'); // 3000

Pour améliorer la sécurité des types, nous vous encourageons à étendre le type ProvidedContext :

ts
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test', {
  watch: false,
});
vitest.provide('wsPort', 3000);

declare module 'vitest' {
  export interface ProvidedContext {
    wsPort: number;
  }
}

WARNING

Techniquement, provide est une méthode du WorkspaceProject, elle est donc limitée à ce projet spécifique. Cependant, tous les projets héritent des valeurs du projet principal, ce qui rend vitest.provide universel pour transmettre des valeurs aux tests.

TIP

Cette méthode est également disponible pour les fichiers de configuration globale si vous ne souhaitez pas utiliser l'API publique :

js
export default function setup({ provide }) {
  provide('wsPort', 3000);
}
Pager
Page suivanteExécuteur de tests

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/advanced/api

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors