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

API

Node API

Erweiterte API

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

Plugin-API

Runner API

Reporter

Aufgaben-Metadaten

Leitfaden

Tests ausführen

Reporter erweitern

Benutzerdefinierter Pool

Vitest konfigurieren

Test-API-Referenz

Auf dieser Seite

Tests ausführen ​

WARNING

Diese Anleitung erläutert die erweiterte API zur Ausführung von Tests über ein Node.js-Skript. Wenn Sie lediglich Tests ausführen möchten, ist dies wahrscheinlich nicht erforderlich. Sie wird primär von Bibliotheksautoren eingesetzt.

Breaking Changes halten sich möglicherweise nicht an SemVer. Bitte fixieren Sie die Vitest-Version, wenn Sie die experimentelle API verwenden.

Vitest bietet zwei Methoden zur Initialisierung:

  • startVitest initialisiert Vitest, überprüft die Paketinstallation und führt Tests sofort aus.
  • createVitest initialisiert Vitest lediglich und führt keine Tests aus.

startVitest ​

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

const vitest = await startVitest(
  'test',
  [], // CLI-Filter
  {}, // Testkonfiguration überschreiben
  {}, // Vite-Konfiguration überschreiben
  {} // Benutzerdefinierte Vitest-Optionen
);
const testModules = vitest.state.getTestModules();
for (const testModule of testModules) {
  console.log(testModule.moduleId, testModule.ok() ? 'bestanden' : 'fehlgeschlagen');
}

TIP

Die APIs TestModule, TestSuite und TestCase sind nicht experimentell und entsprechen seit Vitest 2.1 SemVer.

createVitest ​

Erstellt eine Vitest-Instanz, ohne Tests auszuführen.

Die Methode createVitest überprüft nicht, ob die erforderlichen Pakete installiert sind. Sie ignoriert auch config.standalone oder config.mergeReports. Vitest wird nicht automatisch beendet, selbst wenn der watch-Modus deaktiviert ist.

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

const vitest = await createVitest(
  'test',
  {}, // Testkonfiguration überschreiben
  {}, // Vite-Konfiguration überschreiben
  {} // Benutzerdefinierte Vitest-Optionen
);

// Wird aufgerufen, wenn `vitest.cancelCurrentRun()` ausgeführt wird
vitest.onCancel(() => {});
// Wird beim Aufruf von `vitest.close()` ausgelöst
vitest.onClose(() => {});
// Wird aufgerufen, wenn Vitest Testdateien erneut ausführt
vitest.onTestsRerun(files => {});

try {
  // Dies setzt process.exitCode auf 1, falls Tests fehlschlagen,
  // und schließt den Prozess nicht automatisch.
  await vitest.start(['my-filter']);
} catch (err) {
  // Dies kann eine Ausnahme werfen:
  // "FilesNotFoundError", wenn keine Dateien gefunden wurden.
  // "GitNotFoundError" mit `--changed` und das Repository nicht initialisiert ist.
} finally {
  await vitest.close();
}

Wenn Sie die Vitest-Instanz aktiv halten möchten, stellen Sie sicher, dass Sie zumindest init aufrufen. Dies initialisiert die Reporter und den Coverage-Provider, führt jedoch keine Tests aus. Es wird auch empfohlen, den watch-Modus zu aktivieren, selbst wenn Sie den Vitest-Watcher nicht nutzen möchten, die Instanz aber weiterhin betreiben wollen. Vitest ist auf dieses Flag angewiesen, damit einige seiner Funktionen in einem kontinuierlichen Prozess korrekt arbeiten.

Nachdem die Reporter initialisiert wurden, verwenden Sie runTestSpecifications oder rerunTestSpecifications, um Tests auszuführen, falls ein manueller Durchlauf notwendig ist:

ts
watcher.on('change', async file => {
  const specifications = vitest.getModuleSpecifications(file);
  if (specifications.length) {
    vitest.invalidateFile(file);
    // Sie können `runTestSpecifications` verwenden, wenn die "reporter.onWatcher*"-Hooks
    // nicht aufgerufen werden sollen.
    await vitest.rerunTestSpecifications(specifications);
  }
});

WARNING

Das obige Beispiel zeigt einen möglichen Anwendungsfall, falls Sie das Standard-Watcher-Verhalten deaktivieren. Standardmäßig führt Vitest Tests bereits erneut aus, sobald sich Dateien ändern.

Beachten Sie auch, dass getModuleSpecifications Testdateien nur auflöst, wenn sie bereits von globTestSpecifications verarbeitet wurden. Wurde die Datei gerade erst erstellt, verwenden Sie stattdessen project.matchesGlobPattern:

ts
watcher.on('add', async file => {
  const specifications = [];
  for (const project of vitest.projects) {
    if (project.matchesGlobPattern(file)) {
      specifications.push(project.createSpecification(file));
    }
  }

  if (specifications.length) {
    await vitest.rerunTestSpecifications(specifications);
  }
});

Um den Watcher zu deaktivieren, können Sie seit Vite 5.3 server.watch: null oder server.watch: { ignored: ['*/*'] } in einer Vite-Konfiguration angeben:

ts
await createVitest(
  'test',
  {},
  {
    plugins: [
      {
        name: 'stop-watcher',
        async configureServer(server) {
          await server.watcher.close();
        },
      },
    ],
    server: {
      watch: null,
    },
  }
);
Pager
Vorherige SeiteAufgaben-Metadaten
Nächste SeiteReporter erweitern

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/guide/tests

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2021-Present Vitest Team