TestModule
A classe TestModule
representa um único módulo dentro de um projeto. Esta classe está disponível apenas na thread principal. Para interagir com tarefas em tempo de execução, consulte a "API do Runner".
A instância de TestModule
sempre possui uma propriedade type
com o valor module
. Você pode usar essa propriedade para diferenciar entre os diversos tipos de tarefas:
if (task.type === 'module') {
task; // TestModule
}
Estendendo Métodos da Suíte
A classe TestModule
herda todos os métodos e propriedades de TestSuite
. Este guia abordará apenas os métodos e propriedades que são exclusivos de TestModule
.
moduleId
Geralmente, este é um caminho de arquivo absoluto no estilo Unix (mesmo em sistemas Windows). Pode ser um ID virtual se o arquivo não estiver presente em disco. Este valor corresponde ao ID do ModuleGraph
do 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 maneira similar a testSuite.state()
, mas também pode retornar queued
(em fila) caso o módulo ainda não tenha sido executado.
meta 3.1.0+
function meta(): TaskMeta;
Metadados personalizados que foram anexados ao módulo durante sua execução ou coleta. Os metadados podem ser anexados ao atribuir uma propriedade ao objeto task.meta
durante a execução de um teste:
import { test } from 'vitest';
describe('the validation works correctly', task => {
// Atribuição de "decorated" durante a coleta
task.file.meta.decorated = false;
test('some test', ({ task }) => {
// Atribuição de "decorated" durante a execução do teste, estará disponível
// apenas no hook onTestCaseReady
task.file.meta.decorated = false;
});
});
TIP
Se os metadados foram anexados durante a fase de coleta (fora da função test
), eles estarão acessíveis no hook onTestModuleCollected
do reporter personalizado.
diagnostic
function diagnostic(): ModuleDiagnostic;
Informações úteis sobre o módulo, como duração e uso de memória. Se o módulo ainda não foi executado, todos os valores de diagnóstico retornarão 0
.
interface ModuleDiagnostic {
/**
* O tempo necessário para importar e inicializar um ambiente.
*/
readonly environmentSetupDuration: number;
/**
* O tempo que o Vitest leva para configurar o ambiente de teste (runner, mocks, etc.).
*/
readonly prepareDuration: number;
/**
* O tempo que leva para importar o módulo de teste.
* Isso inclui a importação de todo o conteúdo do módulo e a execução dos callbacks da suíte.
*/
readonly collectDuration: number;
/**
* O tempo que leva para importar o módulo de configuração.
*/
readonly setupDuration: number;
/**
* Duração acumulada de todos os testes e hooks dentro do módulo.
*/
readonly duration: number;
/**
* A quantidade de memória utilizada pelo módulo em bytes.
* Este valor está disponível apenas se o teste foi executado com a flag `logHeapUsage`.
*/
readonly heap: number | undefined;
/**
* O tempo gasto importando cada dependência não externalizada que o Vitest processou.
*/
readonly importDurations: Record<string, ImportDuration>;
}
/** O tempo gasto importando e executando um arquivo não externalizado. */
interface ImportDuration {
/** O tempo gasto importando e executando o próprio arquivo, sem incluir todas as importações não externalizadas que ele realiza. */
selfTime: number;
/** O tempo gasto importando e executando o arquivo e todas as suas importações. */
totalTime: number;
}