Erweiterte API
WARNING
Dieser Leitfaden listet erweiterte APIs auf, um Tests über ein Node.js-Skript auszuführen. Wenn Sie lediglich Tests ausführen möchten, benötigen Sie diese wahrscheinlich nicht. Sie wird hauptsächlich von Bibliotheksentwicklern verwendet.
Sie können jede Methode aus dem vitest/node-Einstiegspunkt importieren.
startVitest
function startVitest(
mode: VitestRunMode,
cliFilters: string[] = [],
options: CliOptions = {},
viteOverrides?: ViteUserConfig,
vitestOptions?: VitestOptions
): Promise<Vitest>;Sie können Vitest-Tests mit seiner Node-API starten:
import { startVitest } from 'vitest/node';
const vitest = await startVitest('test');
await vitest.close();Die Funktion startVitest gibt eine Vitest-Instanz zurück, sofern Tests gestartet werden können.
Wenn der Überwachungsmodus nicht aktiviert ist, wird die close-Methode von Vitest automatisch aufgerufen.
Wenn der Überwachungsmodus aktiviert ist und das Terminal TTY unterstützt, registriert Vitest Konsolen-Tastenkürzel.
Sie können eine Liste von Filtern als zweites Argument übergeben. Vitest führt dann nur Tests aus, deren Dateipfad mindestens einen der übergebenen Strings enthält.
Zusätzlich können Sie das dritte Argument nutzen, um CLI-Argumente zu übergeben. Diese überschreiben dann alle Testkonfigurationsoptionen. Alternativ können Sie die vollständige Vite-Konfiguration als viertes Argument übergeben, wodurch sie Vorrang vor allen anderen benutzerdefinierten Optionen erhält.
Nach dem Ausführen der Tests können Sie die Ergebnisse über die API state.getTestModules abrufen:
import type { TestModule } from 'vitest/node';
const vitest = await startVitest('test');
console.log(vitest.state.getTestModules()); // [TestModule]TIP
Der Leitfaden "Tests ausführen" bietet ein Anwendungsbeispiel.
createVitest
function createVitest(
mode: VitestRunMode,
options: CliOptions,
viteOverrides: ViteUserConfig = {},
vitestOptions: VitestOptions = {}
): Promise<Vitest>;Sie können eine Vitest-Instanz mit der Methode createVitest erstellen. Sie gibt dieselbe Vitest-Instanz wie startVitest zurück, startet jedoch keine Tests und validiert auch keine installierten Pakete.
import { createVitest } from 'vitest/node';
const vitest = await createVitest('test', {
watch: false,
});TIP
Der Leitfaden "Tests ausführen" bietet ein Anwendungsbeispiel.
resolveConfig
function resolveConfig(
options: UserConfig = {},
viteOverrides: ViteUserConfig = {}
): Promise<{
vitestConfig: ResolvedConfig;
viteConfig: ResolvedViteConfig;
}>;Diese Methode löst die Konfiguration unter Verwendung benutzerdefinierter Parameter auf. Wenn keine Parameter angegeben sind, ist der root-Pfad process.cwd().
import { resolveConfig } from 'vitest/node';
// vitestConfig enthält nur aufgelöste "test"-Eigenschaften
const { vitestConfig, viteConfig } = await resolveConfig({
mode: 'custom',
configFile: false,
resolve: {
conditions: ['custom'],
},
test: {
setupFiles: ['/my-setup-file.js'],
pool: 'threads',
},
});INFO
Aufgrund der Funktionsweise von Vites createServer muss Vitest die Konfiguration während des configResolve-Hooks des Plugins auflösen. Daher wird diese Methode intern nicht wirklich verwendet und ist ausschließlich als öffentliche API verfügbar.
Wenn Sie die Konfiguration an die APIs startVitest oder createVitest übergeben, löst Vitest die Konfiguration erneut auf.
WARNING
resolveConfig löst keine projects auf. Um Projektkonfigurationen aufzulösen, benötigt Vitest einen laufenden Vite-Server.
Beachten Sie auch, dass viteConfig.test nicht vollständig aufgelöst wird. Wenn Sie die Vitest-Konfiguration benötigen, verwenden Sie stattdessen vitestConfig.
parseCLI
function parseCLI(
argv: string | string[],
config: CliParseOptions = {}
): {
filter: string[];
options: CliOptions;
};Sie können diese Methode verwenden, um CLI-Argumente zu analysieren. Sie akzeptiert einen String (wobei Argumente durch ein einzelnes Leerzeichen getrennt werden) oder ein String-Array von CLI-Argumenten im selben Format, das Vitest CLI verwendet. Sie gibt einen Filter und options zurück, die Sie später an die createVitest- oder startVitest-Methoden übergeben können.
import { parseCLI } from 'vitest/node';
const result = parseCLI('vitest ./files.ts --coverage --browser=chrome');
result.options;
// {
// coverage: { enabled: true },
// browser: { name: 'chrome', enabled: true }
// }
result.filter;
// ['./files.ts']