TestSuite
A classe TestSuite representa um único conjunto de testes. 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 TestSuite sempre possui uma propriedade type com o valor suite. Você pode utilizá-la para diferenciar entre os tipos de tarefas:
if (task.type === 'suite') {
task; // TestSuite
}project
Faz referência ao TestProject ao qual o conjunto de testes pertence.
module
Esta é uma referência direta ao TestModule onde o conjunto de testes é definido.
name
Este é o nome do conjunto de testes que foi passado para a função describe.
import { describe } from 'vitest';
// [!code word:'a lógica de validação']
describe('a lógica de validação', () => {
// ...
});fullName
O nome completo do conjunto de testes, incluindo todos os conjuntos de testes pai, separados pelo símbolo >. Por exemplo, este conjunto de testes tem o nome completo "a lógica de validação > validando cidades":
import { describe, test } from 'vitest';
// [!code word:'a lógica de validação']
// [!code word:'validando cidades']
describe('a lógica de validação', () => {
describe('validando cidades', () => {
// ...
});
});id
Este é o identificador único do conjunto de testes. Este ID é determinístico e permanecerá o mesmo para o mesmo conjunto de testes em múltiplas execuções. O ID é gerado com base no nome do projeto, ID do módulo e ordem do conjunto de testes.
O ID tem o seguinte formato:
1223128da3_0_0_0
^^^^^^^^^^ hash do arquivo
^ índice do conjunto de testes
^ índice do conjunto de testes aninhado
^ índice do testeTIP
Você pode gerar a hash do arquivo com a função generateFileHash de vitest/node, disponível a partir do Vitest 3:
import { generateFileHash } from 'vitest/node';
const hash = generateFileHash(
'/file/path.js', // caminho relativo
undefined // o nome do projeto ou `undefined`, caso não esteja definido
);DANGER
Não tente interpretar o ID. Ele pode começar com um sinal de menos: -1223128da3_0_0_0.
location
A localização no módulo onde o conjunto de testes foi definido. As localizações são coletadas apenas se includeTaskLocation estiver habilitado na configuração. Observe que esta opção é automaticamente habilitada se as flags --reporter=html, --ui ou --browser forem utilizadas.
A localização deste conjunto de testes será { line: 3, column: 1 }:
import { describe } from 'vitest'
describe('a validação funciona corretamente', () => {
// ...
})parent
O conjunto de testes pai. Se o conjunto de testes for chamado diretamente dentro do módulo, o pai será o próprio módulo.
options
interface TaskOptions {
readonly each: boolean | undefined;
readonly fails: boolean | undefined;
readonly concurrent: boolean | undefined;
readonly shuffle: boolean | undefined;
readonly retry: number | undefined;
readonly repeats: number | undefined;
readonly mode: 'run' | 'only' | 'skip' | 'todo';
}As opções com as quais o conjunto de testes foi coletado.
children
Esta é uma coleção de todos os conjuntos de testes e testes dentro do conjunto de testes atual.
for (const task of suite.children) {
if (task.type === 'test') {
console.log('teste', task.fullName);
} else {
// task é TestSuite
console.log('conjunto de testes', task.name);
}
}WARNING
Observe que suite.children iterará apenas o primeiro nível de aninhamento, não se aprofundando. Se você precisar iterar sobre todos os testes ou conjuntos de testes, utilize children.allTests() ou children.allSuites(). Se você precisar iterar sobre tudo, utilize uma função recursiva:
function visit(collection: TestCollection) {
for (const task of collection) {
if (task.type === 'suite') {
// processar um conjunto de testes
visit(task.children);
} else {
// processar um teste
}
}
}ok
function ok(): boolean;Verifica se o conjunto de testes possui algum teste falho. Isso também retornará false se o conjunto de testes falhar durante a coleta. Nesse caso, verifique os errors() para erros lançados.
state
function state(): TestSuiteState;Verifica o estado de execução do conjunto de testes. Possíveis valores de retorno:
- pending: os testes neste conjunto de testes ainda não foram concluídos.
- failed: este conjunto de testes possui testes que falharam ou que não puderam ser coletados. Se
errors()não estiver vazio, significa que o conjunto de testes falhou na coleta dos testes. - passed: todos os testes dentro deste conjunto de testes foram aprovados.
- skipped: este conjunto de testes foi ignorado durante a coleta.
WARNING
Observe que o módulo de teste também possui um método state que retorna os mesmos valores, mas pode retornar um estado queued adicional caso o módulo ainda não tenha sido executado.
errors
function errors(): TestError[];Erros que ocorreram fora da execução do teste durante a coleta, como erros de sintaxe.
import { describe } from 'vitest';
describe('falha na coleta', () => {
throw new Error('um erro customizado');
});WARNING
Observe que os erros são serializados em objetos simples: instanceof Error sempre retornará false.
meta 3.1.0+
function meta(): TaskMeta;Metadados personalizados que foram anexados ao conjunto de testes durante sua execução ou coleta. Os metadados podem ser anexados atribuindo uma propriedade ao objeto task.meta durante uma execução de teste:
import { test } from 'vitest';
describe('a validação funciona corretamente', task => {
// atribuir "decorated" durante a coleta
task.meta.decorated = false;
test('algum teste', ({ task }) => {
// atribuir "decorated" durante a execução do teste; estará disponível
// apenas no hook onTestCaseReady
task.suite.meta.decorated = false;
});
});TIP
Se os metadados forem anexados durante a coleta (fora da função test), eles estarão disponíveis no hook onTestModuleCollected no relatório personalizado.