TestModule
Die Klasse TestModule
repräsentiert ein Modul innerhalb eines Projekts. Diese Klasse ist ausschließlich im Hauptthread verfügbar. Für Aufgaben, die zur Laufzeit ausgeführt werden, konsultieren Sie bitte die "Runner API".
Instanzen der TestModule
-Klasse besitzen stets eine type
-Eigenschaft mit dem Wert module
. Dies ermöglicht die Unterscheidung zwischen verschiedenen Task-Typen:
if (task.type === 'module') {
task; // TestModule
}
Erweiterung von Suite-Methoden
Die Klasse TestModule
erbt alle Methoden und Eigenschaften von der TestSuite
. Dieser Leitfaden listet nur die Methoden und Eigenschaften auf, die spezifisch für TestModule
sind.
moduleId
Dies ist üblicherweise ein absoluter Unix-Dateipfad (auch unter Windows). Es kann sich um eine virtuelle ID handeln, falls die Datei nicht physisch auf der Festplatte existiert. Dieser Wert entspricht der ModuleGraph
-ID von Vite.
'C:/Users/Documents/project/example.test.ts'; // ✅
'/Users/mac/project/example.test.ts'; // ✅
'C:\\Users\\Documents\\project\\example.test.ts'; // ❌
state
function state(): TestModuleState;
Funktioniert analog zu testSuite.state()
, kann jedoch zusätzlich queued
zurückgeben, wenn das Modul noch nicht ausgeführt wurde.
meta 3.1.0+
function meta(): TaskMeta;
Benutzerdefinierte Metadaten, die während der Ausführung oder Sammlung an das Modul angehängt wurden. Metadaten können während eines Testlaufs durch Zuweisung einer Eigenschaft zum task.meta
-Objekt hinzugefügt werden:
import { test } from 'vitest';
describe('the validation works correctly', task => {
// Zuweisung von "decorated" während der Sammlung
task.file.meta.decorated = false;
test('some test', ({ task }) => {
// Zuweisung von "decorated" während des Testlaufs; es wird
// dann nur im onTestCaseReady-Hook verfügbar sein
task.file.meta.decorated = false;
});
});
TIP
Wenn Metadaten während der Sammlung (außerhalb der test
-Funktion) hinzugefügt wurden, sind sie im onTestModuleCollected
-Hook des benutzerdefinierten Reporters verfügbar.
diagnostic
function diagnostic(): ModuleDiagnostic;
Nützliche Modulinformationen, wie z.B. Dauer, Speicherverbrauch usw. Falls das Modul noch nicht ausgeführt wurde, geben alle Diagnosewerte 0
zurück.
interface ModuleDiagnostic {
/**
* Die Zeit für den Import und die Initialisierung einer Umgebung.
*/
readonly environmentSetupDuration: number;
/**
* Die Zeit, die Vitest zum Einrichten des Test-Harness (Runner, Mocks usw.) benötigt.
*/
readonly prepareDuration: number;
/**
* Die Zeit, die zum Importieren des Testmoduls benötigt wird.
* Dies beinhaltet den Import aller Inhalte im Modul und die Ausführung von Suite-Callbacks.
*/
readonly collectDuration: number;
/**
* Die Zeit, die zum Importieren des Setup-Moduls benötigt wird.
*/
readonly setupDuration: number;
/**
* Akkumulierte Dauer aller Tests und Hooks im Modul.
*/
readonly duration: number;
/**
* Die vom Modul in Bytes verwendete Speichermenge.
* Dieser Wert ist nur verfügbar, wenn der Test mit dem Flag `logHeapUsage` ausgeführt wurde.
*/
readonly heap: number | undefined;
/**
* Die Zeit, die für den Import jeder von Vitest verarbeiteten, nicht externalisierten Abhängigkeit aufgewendet wurde.
*/
readonly importDurations: Record<string, ImportDuration>;
}
/** Die Zeit für den Import und die Ausführung einer nicht externalisierten Datei. */
interface ImportDuration {
/** Die Zeit für den Import und die Ausführung der Datei selbst, exklusive aller nicht externalisierten Importe der Datei. */
selfTime: number;
/** Die Zeit für den Import und die Ausführung der Datei und all ihrer Importe. */
totalTime: number;
}