TestModule
La classe TestModule
représente un module unique au sein d'un projet. Cette classe est exclusivement disponible dans le thread principal. Pour interagir avec les tâches d'exécution, veuillez vous référer à l'"API du Runner".
L'instance TestModule
possède toujours une propriété type
dont la valeur est module
. Vous pouvez l'utiliser pour distinguer les différents types de tâches :
if (task.type === 'module') {
task; // TestModule
}
Extension des méthodes de suite
La classe TestModule
hérite de toutes les méthodes et propriétés de la classe TestSuite
. Ce guide ne listera que les méthodes et propriétés spécifiques à TestModule
.
moduleId
Il s'agit généralement d'un chemin de fichier Unix absolu (même sous Windows). Il peut s'agir d'un identifiant virtuel si le fichier n'est pas présent sur le disque. Cette valeur correspond à l'identifiant ModuleGraph
de 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;
Fonctionne de manière similaire à testSuite.state()
, mais peut également retourner queued
si le module n'a pas encore été exécuté.
meta 3.1.0+
function meta(): TaskMeta;
Métadonnées personnalisées associées au module pendant son exécution ou sa collecte. Les métadonnées peuvent être associées en affectant une propriété à l'objet task.meta
lors de l'exécution d'un test :
import { test } from 'vitest';
describe('the validation works correctly', task => {
// affecte "decorated" pendant la collecte
task.file.meta.decorated = false;
test('some test', ({ task }) => {
// affecte "decorated" pendant l'exécution du test, il sera disponible
// uniquement dans le crochet onTestCaseReady
task.file.meta.decorated = false;
});
});
TIP
Si des métadonnées ont été associées pendant la phase de collecte (en dehors de la fonction test
), elles seront disponibles dans le crochet onTestModuleCollected
du reporter personnalisé.
diagnostic
function diagnostic(): ModuleDiagnostic;
Informations utiles sur le module, telles que la durée et l'utilisation de la mémoire. Si le module n'a pas encore été exécuté, toutes les valeurs de diagnostic retourneront 0
.
interface ModuleDiagnostic {
/**
* Le temps nécessaire pour importer et initialiser un environnement.
*/
readonly environmentSetupDuration: number;
/**
* Le temps nécessaire à Vitest pour configurer l'infrastructure de test (runner, mocks, etc.).
*/
readonly prepareDuration: number;
/**
* Le temps nécessaire pour importer le module de test.
* Cela inclut l'importation de tout le contenu du module et l'exécution des callbacks de suite.
*/
readonly collectDuration: number;
/**
* Le temps nécessaire pour importer le module de configuration.
*/
readonly setupDuration: number;
/**
* Durée cumulée de tous les tests et crochets dans le module.
*/
readonly duration: number;
/**
* La quantité de mémoire utilisée par le module en octets.
* Cette valeur n'est disponible que si le test a été exécuté avec l'option `logHeapUsage`.
*/
readonly heap: number | undefined;
/**
* Le temps passé à importer chaque dépendance non externalisée traitée par Vitest.
*/
readonly importDurations: Record<string, ImportDuration>;
}
/** Le temps passé à importer et exécuter un fichier non externalisé. */
interface ImportDuration {
/** Le temps passé à importer et exécuter le fichier lui-même, sans compter toutes les importations non externalisées que le fichier effectue. */
selfTime: number;
/** Le temps passé à importer et exécuter le fichier et toutes ses importations. */
totalTime: number;
}