Skip to content
Vitest 3
Main Navigation Leitfaden & APIKonfigurationBrowser-ModusFortgeschritten API
3.2.0
2.1.9
1.6.1
0.34.6

Deutsch

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

Deutsch

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

Aussehen

Sidebar Navigation

Einführung

Warum Vitest

Erste Schritte

Funktionen

Vitest konfigurieren

API

Test-API-Referenz

Mock-Funktionen

Vi

expect

expectTypeOf

assert

assertType

Leitfaden

Befehlszeilenschnittstelle

Testfilterung

Testprojekte

Reporter

Code-Abdeckung

Snapshot

Mocking

Parallelisierung

Typüberprüfungen

Vitest UI

Tests im Quellcode

Test-Kontext

Test-Annotationen

Testumgebung

Matcher erweitern

IDE-Integrationen

Debugging

Häufige Fehler

Migrationsleitfaden

Migration zu Vitest 3.0

Migration von Jest

Performance

Leistungsprofilierung von Tests

Leistung verbessern

Browser-Modus

Erweiterte API

Vergleiche mit anderen Test-Runnern

Auf dieser Seite

Testumgebung ​

Vitest bietet die Option environment zur Ausführung von Code in einer bestimmten Umgebung. Das Verhalten der Umgebung lässt sich mit der Option environmentOptions anpassen.

Standardmäßig stehen Ihnen diese Umgebungen zur Verfügung:

  • node ist die Standardumgebung.
  • jsdom emuliert eine Browserumgebung, indem es die Browser-API bereitstellt und das Paket jsdom verwendet.
  • happy-dom emuliert eine Browserumgebung, indem es die Browser-API bereitstellt. Es gilt zwar als schneller als jsdom, bietet aber nicht den vollen API-Umfang. Es verwendet das Paket happy-dom.
  • edge-runtime emuliert Vercels edge-runtime und verwendet das Paket @edge-runtime/vm.

INFO

Bei der Verwendung der Umgebungen jsdom oder happy-dom folgt Vitest denselben Regeln wie Vite beim Importieren von CSS und Assets. Wenn der Import einer externen Abhängigkeit mit dem Fehler unknown extension .css fehlschlägt, müssen Sie die gesamte Importkette manuell einbinden, indem Sie alle Pakete zu server.deps.external hinzufügen. Wenn der Fehler beispielsweise in package-3 in dieser Importkette auftritt: Quellcode -> package-1 -> package-2 -> package-3, müssen Sie alle drei Pakete zu server.deps.external hinzufügen.

Die require-Anweisungen für CSS und Assets innerhalb der externen Abhängigkeiten werden automatisch aufgelöst.

WARNING

Umgebungen existieren nur, wenn Tests in Node.js ausgeführt werden.

browser gilt in Vitest nicht als Umgebung. Wenn Sie einen Teil Ihrer Tests im Browser-Modus ausführen möchten, können Sie ein Testprojekt erstellen.

Umgebungen für bestimmte Dateien ​

Die Option environment in Ihrer Konfiguration gilt für alle Testdateien in Ihrem Projekt. Für eine präzisere Steuerung können Sie Steuerkommentare verwenden, um die Umgebung für bestimmte Dateien festzulegen. Steuerkommentare sind Kommentare, die mit @vitest-environment beginnen, gefolgt vom Umgebungsnamen:

ts
// @vitest-environment jsdom

import { expect, test } from 'vitest';

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

Alternativ können Sie auch die Option environmentMatchGlobs festlegen, die die Umgebung basierend auf den Glob-Mustern spezifiziert.

Benutzerdefinierte Umgebung ​

Sie können Ihr eigenes Paket erstellen, um die Vitest-Umgebung zu erweitern. Dazu erstellen Sie ein Paket mit dem Namen vitest-environment-${name} oder geben den Pfad zu einer gültigen JS/TS-Datei an. Dieses Paket sollte ein Objekt vom Typ Environment exportieren:

ts
import type { Environment } from 'vitest/environments';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  // optional - nur wenn Sie den "experimental-vm"-Pool unterstützen
  async setupVM() {
    const vm = await import('node:vm');
    const context = vm.createContext();
    return {
      getVmContext() {
        return context;
      },
      teardown() {
        // wird aufgerufen, nachdem alle Tests mit dieser Umgebung ausgeführt wurden
      },
    };
  },
  setup() {
    // benutzerdefinierte Einrichtung
    return {
      teardown() {
        // wird aufgerufen, nachdem alle Tests mit dieser Umgebung ausgeführt wurden
      },
    };
  },
};

WARNING

Vitest erfordert die Option transformMode am Umgebungsobjekt. Der Wert muss ssr oder web sein. Dieser Wert bestimmt, wie Plugins den Quellcode transformieren. Ist er auf ssr gesetzt, erhalten Plugin-Hooks beim Transformieren oder Auflösen von Dateien ssr: true. Andernfalls ist ssr auf false gesetzt.

Sie können auch auf die standardmäßigen Vitest-Umgebungen über den Eintrag vitest/environments zugreifen:

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

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

Vitest bietet auch die Hilfsfunktion populateGlobal, mit der Eigenschaften von einem Objekt in den globalen Namensraum übertragen werden können:

ts
interface PopulateOptions {
  // Sollen Nicht-Klassenfunktionen an den globalen Namespace gebunden werden
  bindFunctions?: boolean;
}

interface PopulateResult {
  // Eine Liste aller kopierten Schlüssel, auch wenn der Wert im Originalobjekt nicht existiert
  keys: Set<string>;
  // Eine Map des Originalobjekts, das möglicherweise mit Schlüsseln überschrieben wurde
  // Sie können diese Werte innerhalb der `teardown`-Funktion zurückgeben
  originals: Map<string | symbol, any>;
}

export function populateGlobal(
  global: any,
  original: any,
  options: PopulateOptions
): PopulateResult;
Pager
Vorherige SeiteTest-Annotationen
Nächste SeiteMatcher erweitern

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/environment

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2021-Present Vitest Team