TestModule
La classe TestModule
rappresenta un singolo modulo all'interno di un progetto. Questa classe è disponibile esclusivamente nel processo principale. Per interagire con i task di runtime, si prega di fare riferimento alla "Runner API".
L'istanza TestModule
possiede sempre una proprietà type
con il valore module
. Questa può essere utilizzata per distinguere tra diverse tipologie di task:
if (task.type === 'module') {
task; // TestModule
}
Ereditarietà dei Metodi di TestSuite
La classe TestModule
eredita tutti i metodi e le proprietà da TestSuite
. Questa guida elencherà solo i metodi e le proprietà che sono unici di TestModule
.
moduleId
Questo è solitamente un percorso di file UNIX assoluto (anche su sistemi Windows). Può essere un ID virtuale se il file non risiede su disco. Questo valore corrisponde all'ID ModuleGraph
di 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;
Si comporta in modo analogo a testSuite.state()
, ma può anche restituire queued
se il modulo non è ancora stato eseguito.
meta 3.1.0+
function meta(): TaskMeta;
Metadati personalizzati che sono stati associati al modulo durante la sua esecuzione o raccolta. I metadati possono essere allegati assegnando una proprietà all'oggetto task.meta
durante un'esecuzione di test:
import { test } from 'vitest';
describe('the validation works correctly', task => {
// assegna "decorated" durante la raccolta
task.file.meta.decorated = false;
test('some test', ({ task }) => {
// assegna "decorated" durante l'esecuzione del test; sarà disponibile
// solo nell'hook onTestCaseReady
task.file.meta.decorated = false;
});
});
TIP
Se i metadati sono stati allegati durante la fase di raccolta (al di fuori della funzione test
), saranno disponibili nell'hook onTestModuleCollected
all'interno del reporter personalizzato.
diagnostic
function diagnostic(): ModuleDiagnostic;
Informazioni utili relative al modulo, come la durata, l'utilizzo della memoria e altro. Se il modulo non è ancora stato eseguito, tutti i valori diagnostici restituiranno 0
.
interface ModuleDiagnostic {
/**
* Il tempo necessario per importare e avviare un ambiente.
*/
readonly environmentSetupDuration: number;
/**
* Il tempo necessario a Vitest per configurare l'ambiente di test (runner, mock, ecc.).
*/
readonly prepareDuration: number;
/**
* Il tempo necessario per importare il modulo di test.
* Questo include l'importazione di tutto il contenuto del modulo e l'esecuzione dei callback della suite.
*/
readonly collectDuration: number;
/**
* Il tempo necessario per importare il modulo di setup.
*/
readonly setupDuration: number;
/**
* Durata accumulata di tutti i test e gli hook all'interno del modulo.
*/
readonly duration: number;
/**
* La quantità di memoria utilizzata dal modulo in byte.
* Questo valore è disponibile solo se il test viene eseguito con il flag `logHeapUsage`.
*/
readonly heap: number | undefined;
/**
* Il tempo impiegato per importare ogni dipendenza non esternalizzata che Vitest ha elaborato.
*/
readonly importDurations: Record<string, ImportDuration>;
}
/** Il tempo impiegato per importare ed eseguire un file non esternalizzato. */
interface ImportDuration {
/** Il tempo impiegato per importare ed eseguire il file stesso, senza contare tutte le importazioni non esternalizzate che il file include. */
selfTime: number;
/** Il tempo impiegato per importare ed eseguire il file e tutte le sue importazioni. */
totalTime: number;
}