Skip to content
Vitest 3
Main Navigation Guide & APIConfigurationMode NavigateurAPI avancée
3.2.0
2.1.9
1.6.1
0.34.6

Français

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

Français

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

Apparence

Sidebar Navigation

API

Node API

API avancée

API Vitest

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API des plugins

API du Runner

Rapporteurs

Métadonnées de tâche

Guide

Exécuter les tests

Extension des Rapporteurs

Pool personnalisé

Configuration de Vitest

Référence de l'API des Tests

Sur cette page

TestSuite ​

La classe TestSuite représente une suite de tests. 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 TestSuite possède toujours une propriété type dont la valeur est suite. Vous pouvez l'utiliser pour distinguer les différents types de tâches :

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

project ​

Cette propriété fait référence au TestProject auquel le test appartient.

module ​

Ceci est une référence directe au TestModule dans lequel le test est défini.

name ​

Il s'agit du nom de la suite tel que passé à la fonction describe.

ts
import { describe } from 'vitest';

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

fullName ​

Le nom complet de la suite, incluant toutes les suites parentes, séparées par le symbole >. Par exemple, cette suite aura pour nom complet "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 ​

C'est l'identifiant unique de la suite. Cet ID est déterministe et restera identique pour la même suite lors d'exécutions multiples. L'ID est généré à partir du nom du projet, de l'identifiant du module et de l'ordre de la suite.

L'ID se présente sous la forme suivante :

1223128da3_0_0_0
^^^^^^^^^^ hachage du fichier
           ^ index de la suite
             ^ index de la suite imbriquée
               ^ index du test

TIP

Vous pouvez générer le hachage de fichier avec la fonction generateFileHash de vitest/node, disponible depuis Vitest 3 :

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

const hash = generateFileHash(
  '/file/path.js', // chemin relatif
  undefined // le nom du projet ou `undefined` si non défini
);

DANGER

N'essayez pas d'analyser l'ID. Il peut commencer par un signe moins : -1223128da3_0_0_0.

location ​

L'emplacement dans le module où la suite a été définie. Les emplacements ne sont collectés que si includeTaskLocation est activé dans la configuration. Notez que cette option est automatiquement activée si les drapeaux --reporter=html, --ui ou --browser sont utilisés.

L'emplacement de cette suite sera { line: 3, column: 1 } :

ts
import { describe } from 'vitest'

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

parent ​

La suite parente. Si la suite est appelée directement à l'intérieur du module, le parent sera le module lui-même.

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

Les options avec lesquelles la suite a été collectée.

children ​

Ceci est une collection de toutes les suites et tests contenus dans la suite actuelle.

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

WARNING

Notez que suite.children n'itérera que le premier niveau d'imbrication, sans aller plus loin. Si vous avez besoin d'itérer sur tous les tests ou suites, utilisez children.allTests() ou children.allSuites(). Pour itérer sur tous les éléments, utilisez une fonction récursive :

ts
function visit(collection: TestCollection) {
  for (const task of collection) {
    if (task.type === 'suite') {
      // traiter une suite
      visit(task.children);
    } else {
      // traiter un test
    }
  }
}

ok ​

ts
function ok(): boolean;

Vérifie si la suite contient des tests échoués. Cette fonction retournera également false si la suite a échoué pendant sa collecte. Dans ce cas, consultez la méthode errors() pour les erreurs levées.

state ​

ts
function state(): TestSuiteState;

Retourne l'état d'exécution de la suite. Valeurs de retour possibles :

  • pending : les tests de cette suite n'ont pas encore terminé leur exécution.
  • failed : cette suite contient des tests échoués ou n'a pas pu être collectée. Si errors() n'est pas vide, cela indique que la suite n'a pas réussi à collecter les tests.
  • passed : tous les tests de cette suite ont réussi.
  • skipped : cette suite a été ignorée pendant la collecte.

WARNING

Notez que le module de test possède également une méthode state qui retourne les mêmes valeurs, mais il peut aussi retourner un état queued supplémentaire si le module n'a pas encore été exécuté.

errors ​

ts
function errors(): TestError[];

Erreurs survenues en dehors de l'exécution des tests pendant la collecte, telles que des erreurs de syntaxe.

ts
import { describe } from 'vitest';

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

WARNING

Notez que les erreurs sont sérialisées en objets simples : instanceof Error retournera toujours false.

meta 3.1.0+ ​

ts
function meta(): TaskMeta;

Métadonnées personnalisées qui ont été attachées à la suite pendant son exécution ou sa collecte. Les métadonnées peuvent être attachées en assignant une propriété à l'objet task.meta pendant l'exécution d'un test :

ts
import { test } from 'vitest';

describe('the validation works correctly', task => {
  // assigner "decorated" pendant la collecte
  task.meta.decorated = false;

  test('some test', ({ task }) => {
    // assigner "decorated" pendant l'exécution du test, il sera disponible
    // uniquement dans le hook onTestCaseReady
    task.suite.meta.decorated = false;
  });
});

TIP

Si des métadonnées ont été attachées pendant la collecte (en dehors de la fonction test), elles seront disponibles dans le hook onTestModuleCollected du rapporteur personnalisé.

Pager
Page précédenteTestCase
Page suivanteTestModule

Publié sous la licence MIT.

Copyright (c) 2021-Present Vitest Team

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

Publié sous la licence MIT.

Copyright (c) 2021-Present Vitest Team