Skip to content
Vitest 1
Main Navigation GuideAPIConfigurationAvancé
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

Guide

Pourquoi Vitest

Premiers pas

Fonctionnalités

Espace de travail

Interface de ligne de commande

Filtrage des tests

Reporters

Couverture

Instantané (Snapshot)

Simulations

Tests de Type

Interface utilisateur de Vitest

Mode Navigateur

Tests intégrés au code source

Contexte de Test

Environnement de test

Extension des vérificateurs (Matchers)

Intégrations pour IDE

Débogage

Comparaison avec d'autres outils de test

Guide de migration

Erreurs courantes

Améliorer les performances

API

Référence de l'API de Test

Fonctions Mock

Vi

expect

expectTypeOf

assert

assertType

Configuration

Configuration du fichier Vitest

Configuration de Vitest

Sur cette page

Environnement de test ​

Vitest offre l'option environment pour exécuter du code dans un environnement spécifique. Vous pouvez modifier le comportement de cet environnement avec l'option environmentOptions.

Par défaut, les environnements suivants sont disponibles :

  • node : l'environnement par défaut.
  • jsdom : émule l'environnement d'un navigateur en fournissant l'API du navigateur, grâce au package jsdom.
  • happy-dom : émule l'environnement d'un navigateur en fournissant l'API du navigateur. Il est généralement plus rapide que jsdom, mais certaines API sont manquantes. Il utilise le package happy-dom.
  • edge-runtime : émule edge-runtime de Vercel, en utilisant le package @edge-runtime/vm.

Environnements pour des fichiers spécifiques ​

Lorsque vous définissez l'option environment dans votre configuration, elle s'applique à tous les fichiers de test de votre projet. Pour un contrôle plus précis, vous pouvez utiliser des commentaires de contrôle afin de spécifier l'environnement pour des fichiers spécifiques. Ces commentaires commencent par @vitest-environment, suivi du nom de l'environnement :

ts
// @vitest-environment jsdom

import { expect, test } from 'vitest';

test('test', () => {
  expect(typeof window).not.toBe('undefined');
});

Vous pouvez également définir l'option environmentMatchGlobs pour spécifier l'environnement en utilisant des motifs glob.

Environnement personnalisé ​

À partir de la version 0.23.0, vous pouvez créer votre propre package pour étendre l'environnement Vitest. Pour ce faire, créez un package nommé vitest-environment-${name} ou spécifiez un chemin d'accès vers un fichier JS valide (pris en charge depuis la version 0.34.0). Ce package doit exporter un objet conforme à l'interface Environment :

ts
import type { Environment } from 'vitest';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  // optional - only if you support "experimental-vm" pool
  async setupVM() {
    const vm = await import('node:vm');
    const context = vm.createContext();
    return {
      getVmContext() {
        return context;
      },
      teardown() {
        // called after all tests with this env have been run
      },
    };
  },
  setup() {
    // custom setup
    return {
      teardown() {
        // called after all tests with this env have been run
      },
    };
  },
};

WARNING

Depuis la version 0.34.0, Vitest requiert l'option transformMode dans l'objet d'environnement. Elle doit être égale à ssr ou web. Cette valeur détermine la manière dont les plugins transformeront le code source. Si elle est définie sur ssr, les hooks de plugin recevront ssr: true lors de la transformation ou de la résolution des fichiers. Sinon, ssr est défini sur false.

Vous pouvez également accéder aux environnements Vitest par défaut via l'entrée vitest/environments :

ts
import { builtinEnvironments, populateGlobal } from 'vitest/environments';

console.log(builtinEnvironments); // { jsdom, happy-dom, node, edge-runtime }

Vitest fournit également la fonction utilitaire populateGlobal, qui peut être utilisée pour déplacer des propriétés d'un objet vers l'espace de noms global :

ts
interface PopulateOptions {
  // should non-class functions be bind to the global namespace
  bindFunctions?: boolean;
}

interface PopulateResult {
  // a list of all keys that were copied, even if value doesn't exist on original object
  keys: Set<string>;
  // a map of original object that might have been overridden with keys
  // you can return these values inside `teardown` function
  originals: Map<string | symbol, any>;
}

export function populateGlobal(
  global: any,
  original: any,
  options: PopulateOptions
): PopulateResult;
Pager
Page précédenteContexte de Test
Page suivanteExtension des vérificateurs (Matchers)

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors

https://v1.vitest.dev/guide/environment

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors