TestModule
Klasa TestModule
reprezentuje pojedynczy moduł w ramach pojedynczego projektu testowego. Jest ona dostępna wyłącznie w głównym wątku. Aby uzyskać informacje na temat pracy z zadaniami uruchomieniowymi, zapoznaj się z sekcją "Runner API".
Instancja TestModule
zawsze posiada właściwość type
o wartości module
. Możesz jej użyć do rozróżnienia między różnymi typami zadań:
if (task.type === 'module') {
task; // TestModule
}
Rozszerzanie metod zestawu testów
Klasa TestModule
dziedziczy wszystkie metody i właściwości z TestSuite
. Niniejszy przewodnik wymienia jedynie metody i właściwości unikalne dla TestModule
.
moduleId
Zazwyczaj jest to bezwzględna ścieżka pliku w formacie uniksowym (nawet w systemie Windows). Może to być wirtualny identyfikator, jeśli plik nie znajduje się na dysku. Ta wartość odpowiada ID ModuleGraph
w 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;
Działa analogicznie do testSuite.state()
, ale może również zwrócić queued
, jeśli moduł nie został jeszcze wykonany.
meta 3.1.0+
function meta(): TaskMeta;
Własne metadane, które zostały dołączone do modułu podczas jego wykonywania lub zbierania testów. Metadane można dołączyć, przypisując właściwość do obiektu task.meta
w trakcie przebiegu testów:
import { test } from 'vitest';
describe('the validation works correctly', task => {
// przypisano "decorated" podczas zbierania testów
task.file.meta.decorated = false;
test('some test', ({ task }) => {
// przypisano "decorated" podczas przebiegu testów, będzie dostępne
// tylko w hooku `onTestCaseReady`
task.file.meta.decorated = false;
});
});
TIP
Jeśli metadane zostały dołączone podczas zbierania testów (poza funkcją test
), będą dostępne w hooku onTestModuleCollected
w niestandardowym raporcie.
diagnostic
function diagnostic(): ModuleDiagnostic;
Przydatne informacje dotyczące modułu, takie jak czas trwania, zużycie pamięci i inne podobne dane. Jeśli moduł nie został jeszcze przetworzony, wszystkie wartości diagnostyczne zwrócą 0
.
interface ModuleDiagnostic {
/**
* Czas potrzebny na import i inicjalizację środowiska.
*/
readonly environmentSetupDuration: number;
/**
* Czas, jaki Vitest potrzebuje na skonfigurowanie środowiska testowego (runner, mocki itp.).
*/
readonly prepareDuration: number;
/**
* Czas potrzebny na zaimportowanie modułu testowego.
* Obejmuje import wszystkich elementów w module i wykonywanie funkcji zwrotnych zestawu.
*/
readonly collectDuration: number;
/**
* Czas potrzebny na zaimportowanie modułu konfiguracyjnego.
*/
readonly setupDuration: number;
/**
* Skumulowany czas wszystkich testów i hooków w module.
*/
readonly duration: number;
/**
* Ilość pamięci zajmowanej przez moduł w bajtach.
* Ta wartość jest dostępna tylko, jeśli test został wykonany z flagą `logHeapUsage`.
*/
readonly heap: number | undefined;
/**
* Czas poświęcony na import każdej nieeksternalizowanej zależności, którą Vitest przetworzył.
*/
readonly importDurations: Record<string, ImportDuration>;
}
/** Czas spędzony na importowaniu i wykonywaniu nieeksternalizowanego pliku. */
interface ImportDuration {
/** Czas spędzony na importowaniu i wykonywaniu samego pliku, bez uwzględniania wszystkich nieeksternalizowanych importów, które ten plik zawiera. */
selfTime: number;
/** Czas spędzony na importowaniu i wykonywaniu pliku oraz wszystkich jego importów. */
totalTime: number;
}