Passer au contenu

Node API

startVitest

Vous pouvez commencer à exécuter des tests Vitest en utilisant son API Node :

import { startVitest } from 'vitest/node'
const vitest = await startVitest('test')
await vitest?.close()

La fonction startVitest renvoie une instance de Vitest si les tests peuvent être démarrés. Elle renvoie undefined, si l’une des conditions suivantes se produit :

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

Si undefined est renvoyé ou si les tests échouent pendant l’exécution, Vitest définit process.exitCode sur 1.

Si le mode veille n’est pas activé, Vitest appellera la méthode close.

Si le mode veille est activé et que le terminal supporte TTY, Vitest enregistrera des raccourcis console.

Vous pouvez transmettre une liste de filtres comme second argument. Vitest exécutera uniquement les tests contenant au moins un des chaînes passées dans leur chemin de fichier.

De plus, vous pouvez utiliser le troisième argument pour passer des arguments CLI, qui remplaceront toutes les options de configuration des tests.

Alternativement, vous pouvez passer la configuration complète de Vite comme quatrième argument, ce qui prévaudra sur toutes les autres options définies par l’utilisateur.

createVitest

Vous pouvez créer vous-même une instance de Vitest en utilisant la fonction createVitest. Elle renvoie la même instance de Vitest que startVitest, mais ne démarre pas les tests et ne valide pas les paquets installés.

import { createVitest } from 'vitest/node'
const vitest = await createVitest('test', {
watch: false,
})

parseCLI

Vous pouvez utiliser cette méthode pour analyser les arguments CLI. Elle accepte une chaîne (où les arguments sont séparés par un seul espace) ou un tableau de chaînes d’arguments CLI dans le même format que le CLI de Vitest utilise. Elle renvoie un filtre et des options que vous pouvez ensuite transmettre aux méthodes createVitest ou startVitest.

import { parseCLI } from 'vitest/node'
parseCLI('vitest ./files.ts --coverage --browser=chrome')

Vitest

L’instance de Vitest nécessite le mode de test actuel. Il peut être soit :

  • test lors de l’exécution des tests d’exécution.
  • benchmark lors de l’exécution des benchmarks.

mode

test

Le mode test n’appellera que des fonctions à l’intérieur de test ou it, et lancera une erreur lorsque bench est rencontré. Ce mode utilise les options include et exclude dans la configuration pour trouver les fichiers de test.

benchmark

Le mode benchmark appelle les fonctions bench et lance une erreur lorsqu’il rencontre test ou it. Ce mode utilise les options benchmark.include et benchmark.exclude dans la configuration pour trouver les fichiers de benchmark.

start

Vous pouvez commencer à exécuter des tests ou des 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. Avec cette méthode, vous pouvez passer des valeurs du fil 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 recevoir les valeurs dans le test, vous devez importer la méthode inject du point d’entrée vitest :

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

Pour une meilleure sécurité de type, nous vous encourageons à augmenter le type de ProvidedContext :

import { createVitest } from 'vitest/node'
const vitest = await createVitest('test', {
watch: false,
})
vitest.provide('wsPort', 3000)
declare module 'vitest' {
export interface ProvidedContext {
wsPort: number
}
}