TestModule
La clase TestModule
representa un único módulo dentro de un proyecto. Esta clase solo está disponible en el hilo principal del proceso. Para trabajar con tareas en tiempo de ejecución, consulta la "API del Runner".
Una instancia de TestModule
siempre tendrá una propiedad type
con el valor module
. Puedes usarla para diferenciar entre distintos tipos de tareas:
if (task.type === 'module') {
task; // TestModule
}
Extensión de métodos de Suite
La clase TestModule
hereda todos los métodos y propiedades de TestSuite
. Esta guía solo listará los métodos y propiedades específicos de TestModule
.
moduleId
Generalmente, es una ruta de archivo Unix absoluta (incluso en Windows). Puede ser un identificador virtual si el archivo no se encuentra en el disco. Este valor corresponde al ID de 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;
Funciona de manera similar a testSuite.state()
, pero también puede devolver queued
si el módulo aún no se ha ejecutado.
meta 3.1.0+
function meta(): TaskMeta;
Metadatos personalizados adjuntados al módulo durante su ejecución o recopilación. Los metadatos se pueden adjuntar asignando una propiedad al objeto task.meta
durante una ejecución de prueba:
import { test } from 'vitest';
describe('the validation works correctly', task => {
// Asignar 'decorated' durante la recopilación
task.file.meta.decorated = false;
test('some test', ({ task }) => {
// Asignar 'decorated' durante la ejecución de la prueba; estará disponible
// solo en el hook onTestCaseReady
task.file.meta.decorated = false;
});
});
TIP
Si los metadatos se adjuntaron durante la recopilación (fuera de la función test
), estarán disponibles en el hook onTestModuleCollected
en el reporter personalizado.
diagnostic
function diagnostic(): ModuleDiagnostic;
Información útil sobre el módulo, como la duración, el uso de memoria, etc. Si el módulo aún no se ha ejecutado, todos los valores de diagnóstico devolverán 0
.
interface ModuleDiagnostic {
/**
* Tiempo necesario para importar e inicializar un entorno.
*/
readonly environmentSetupDuration: number;
/**
* Tiempo que tarda Vitest en configurar el entorno de prueba (runner, mocks, etc.).
*/
readonly prepareDuration: number;
/**
* Tiempo que tarda en importar el módulo de prueba.
* Esto incluye importar todo en el módulo y ejecutar los callbacks de la suite.
*/
readonly collectDuration: number;
/**
* Tiempo que tarda en importar el módulo de configuración.
*/
readonly setupDuration: number;
/**
* Duración acumulada de todas las pruebas y hooks en el módulo.
*/
readonly duration: number;
/**
* Cantidad de memoria utilizada por el módulo, en bytes.
* Este valor solo está disponible si la prueba se ejecutó con la opción `logHeapUsage`.
*/
readonly heap: number | undefined;
/**
* Tiempo dedicado a importar cada dependencia no externa que Vitest ha procesado.
*/
readonly importDurations: Record<string, ImportDuration>;
}
/** Tiempo dedicado a importar y ejecutar un archivo no externo. */
interface ImportDuration {
/** Tiempo dedicado a importar y ejecutar el archivo en sí, sin contar todas las importaciones no externas que realiza el archivo. */
selfTime: number;
/** Tiempo dedicado a importar y ejecutar el archivo y todas sus importaciones. */
totalTime: number;
}