Skip to content
Vitest 3
Main Navigation Guía & APIConfiguraciónModo NavegadorAPI avanzada
3.2.0
2.1.9
1.6.1
0.34.6

Español

English
简体中文
繁體中文
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Español

English
简体中文
繁體中文
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Apariencia

Sidebar Navigation

API

Node API

API Avanzadas

API de Vitest

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API de Plugins

API del Runner

Reporteros

Metadatos de Tareas

Guía

Ejecución de Pruebas

Extensión de los Reporters

Pool Personalizado

Configuración de Vitest

Referencia de la API de prueba

En esta página

TestSuite ​

La clase TestSuite representa una única suite de pruebas. Esta clase solo está disponible en el hilo principal. Para trabajar con tareas en tiempo de ejecución, consulta la "API del corredor".

La instancia de TestSuite siempre tiene una propiedad type con el valor suite. Puedes usarla para distinguir entre diferentes tipos de tareas:

ts
if (task.type === 'suite') {
  task; // TestSuite
}

project ​

Se refiere al TestProject al que pertenece esta suite de pruebas.

module ​

Es una referencia directa al TestModule donde se define esta suite.

name ​

Es el nombre de la suite que se le pasó a la función describe.

ts
import { describe } from 'vitest';

// [!code word:'the validation logic']
describe('the validation logic', () => {
  // ...
});

fullName ​

El nombre completo de la suite, incluyendo todas las suites padre, separadas por el símbolo >. Por ejemplo, el nombre completo de esta suite es "the validation logic > validating cities":

ts
import { describe, test } from 'vitest';

// [!code word:'the validation logic']
// [!code word:'validating cities']
describe('the validation logic', () => {
  describe('validating cities', () => {
    // ...
  });
});

id ​

Es el identificador único de la suite. Este ID es determinista y será el mismo para la misma suite en múltiples ejecuciones. El ID se basa en el nombre del proyecto, el ID del módulo y el orden de la suite.

El formato del ID es el siguiente:

1223128da3_0_0_0
^^^^^^^^^^ hash del archivo
           ^ índice de la suite
             ^ índice de la suite anidada
               ^ índice de la prueba

TIP

Puedes generar el hash del archivo con la función generateFileHash de vitest/node, disponible a partir de Vitest 3:

ts
import { generateFileHash } from 'vitest/node';

const hash = generateFileHash(
  '/file/path.js', // ruta relativa
  undefined // el nombre del proyecto o `undefined` si no está configurado
);

DANGER

No intentes analizar el ID. Puede comenzar con un signo menos: -1223128da3_0_0_0.

location ​

La ubicación en el módulo donde se definió la suite. Las ubicaciones solo se recopilan si includeTaskLocation está habilitado en la configuración. Ten en cuenta que esta opción se habilita automáticamente si se utilizan las banderas --reporter=html, --ui o --browser.

La ubicación de esta suite será { line: 3, column: 1 }:

ts
import { describe } from 'vitest'

describe('the validation works correctly', () => {
  // ...
})
1
2
3
4
5

parent ​

La suite principal. Si la suite fue llamada directamente dentro del módulo, su padre será el propio módulo.

options ​

ts
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';
}

Las opciones con las que se recopiló la suite.

children ​

Esta es una colección de todas las suites y pruebas que están anidadas dentro de la suite actual.

ts
for (const task of suite.children) {
  if (task.type === 'test') {
    console.log('test', task.fullName);
  } else {
    // task: TestSuite
    console.log('suite', task.name);
  }
}

WARNING

Ten en cuenta que suite.children solo iterará el primer nivel de anidamiento, sin profundizar. Si necesitas iterar sobre todas las pruebas o suites anidadas, usa children.allTests() o children.allSuites(). Si necesitas iterar sobre todos los elementos, usa una función recursiva:

ts
function visit(collection: TestCollection) {
  for (const task of collection) {
    if (task.type === 'suite') {
      // reportar una suite
      visit(task.children);
    } else {
      // reportar una prueba
    }
  }
}

ok ​

ts
function ok(): boolean;

Comprueba si la suite contiene alguna prueba fallida. También devolverá false si la suite falló durante la recopilación. En ese caso, verifica errors() para ver los errores lanzados.

state ​

ts
function state(): TestSuiteState;

Verifica el estado de ejecución de la suite. Posibles valores de retorno:

  • pending: las pruebas en esta suite aún no han finalizado su ejecución.
  • failed: esta suite tiene pruebas fallidas o no pudieron ser recopiladas. Si errors() no está vacío, significa que la suite falló al recopilar las pruebas.
  • passed: todas las pruebas dentro de esta suite han pasado.
  • skipped: esta suite fue omitida durante la recopilación.

WARNING

Ten en cuenta que el módulo de prueba también tiene un método state que devuelve los mismos valores, pero puede devolver un estado queued adicional si el módulo aún no se ha ejecutado.

errors ​

ts
function errors(): TestError[];

Errores ocurridos fuera de la ejecución de la prueba durante la fase de recopilación, como errores de sintaxis.

ts
import { describe } from 'vitest';

describe('collection failed', () => {
  throw new Error('a custom error');
});

WARNING

Ten en cuenta que los errores se serializan como objetos simples: instanceof Error siempre devolverá false.

meta 3.1.0+ ​

ts
function meta(): TaskMeta;

Metadatos personalizados que se adjuntaron a la suite durante su ejecución o recopilación. Los metadatos se pueden adjuntar asignando una propiedad al objeto task.meta durante la ejecución de una prueba:

ts
import { test } from 'vitest';

describe('the validation works correctly', task => {
  // asignar 'decorated' durante la recopilación
  task.meta.decorated = false;

  test('some test', ({ task }) => {
    // asignar 'decorated' durante la ejecución de la prueba; estará disponible
    // solo en el hook onTestCaseReady
    task.suite.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 del reporter personalizado.

Pager
AnteriorTestCase
SiguienteTestModule

Publicado bajo la licencia MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/api/test-suite

Publicado bajo la licencia MIT.

Copyright (c) 2021-Present Vitest Team