Skip to content
Vitest 3
Main Navigation Guida & APIConfigurazioneModalità BrowserAPI avanzata
3.2.0
2.1.9
1.6.1
0.34.6

Italiano

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

Italiano

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

Aspetto

Sidebar Navigation

API

Node API

API Avanzate

API di Vitest

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API dei Plugin

API del Runner

Reporter

Metadati del Task

Guida

Esecuzione dei Test

Estensione dei Reporter

Pool Personalizzato

Configurazione di Vitest

Riferimento API di test

In questa pagina

TestSuite ​

La classe TestSuite rappresenta una singola suite di test. Questa classe è disponibile esclusivamente nel thread principale. Per interagire con i task in fase di runtime, si prega di consultare la "Runner API".

L'istanza TestSuite possiede sempre una proprietà type con il valore suite. Questa proprietà può essere utilizzata per distinguere tra i vari tipi di task:

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

project ​

Questo campo fa riferimento al TestProject a cui la suite di test appartiene.

module ​

Questo è un riferimento diretto al TestModule in cui la suite di test è definita.

name ​

Questo è il nome della suite, come passato alla funzione describe.

ts
import { describe } from 'vitest';

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

fullName ​

Il nome completo della suite, che include tutti i nomi delle suite genitrici, separati dal simbolo >. Ad esempio, questa suite avrà il nome completo "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 ​

Questo è l'identificatore univoco della suite. Questo ID è deterministico e rimarrà invariato per la stessa suite attraverso esecuzioni multiple. L'ID è generato in base al nome del progetto, all'ID del modulo e all'ordine della suite.

L'ID si presenta nel seguente formato:

1223128da3_0_0_0
^^^^^^^^^^ hash del file
           ^ indice della suite
             ^ indice della suite annidata
               ^ indice del test

TIP

È possibile generare l'hash del file utilizzando la funzione generateFileHash da vitest/node, disponibile a partire da Vitest 3:

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

const hash = generateFileHash(
  '/file/path.js', // percorso relativo
  undefined // il nome del progetto o `undefined` se non è impostato
);

DANGER

Non tentare di analizzare l'ID. Potrebbe iniziare con un segno meno: -1223128da3_0_0_0.

location ​

La posizione all'interno del modulo in cui la suite è stata definita. Le posizioni vengono raccolte solo se l'opzione includeTaskLocation è abilitata nella configurazione. Si noti che questa opzione è automaticamente abilitata se vengono utilizzati i flag --reporter=html, --ui o --browser.

La posizione di questa suite sarà { line: 3, column: 1 }:

ts
import { describe } from 'vitest'

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

parent ​

La suite genitore. Se la suite è stata invocata direttamente nel modulo, il genitore sarà il modulo stesso.

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

Le opzioni con cui la suite è stata configurata.

children ​

Questa è una collezione di tutte le suite e i test contenuti all'interno della suite corrente.

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

WARNING

Si noti che suite.children itera solo sul primo livello di annidamento e non scende più in profondità. Se è necessario iterare su tutti i test o le suite, utilizzare children.allTests() o children.allSuites(). Per iterare su tutti gli elementi, è consigliabile utilizzare una funzione ricorsiva:

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

ok ​

ts
function ok(): boolean;

Verifica se la suite contiene test falliti. Questo metodo restituirà false anche se la suite è fallita durante la fase di raccolta. In quest'ultimo caso, si prega di controllare il metodo errors() per gli errori generati.

state ​

ts
function state(): TestSuiteState;

Restituisce lo stato di esecuzione della suite. I possibili valori restituiti sono:

  • pending: i test all'interno di questa suite non hanno ancora completato l'esecuzione.
  • failed: questa suite contiene test falliti o non è stato possibile raccoglierli. Se il metodo errors() non è vuoto, significa che la suite non è riuscita a raccogliere i test.
  • passed: tutti i test all'interno di questa suite sono stati eseguiti con successo.
  • skipped: questa suite è stata saltata durante la fase di raccolta.

WARNING

Si noti che anche il modulo di test dispone di un metodo state che restituisce gli stessi valori, ma può anche restituire uno stato aggiuntivo queued se il modulo non è ancora stato eseguito.

errors ​

ts
function errors(): TestError[];

Errori verificatisi al di fuori dell'esecuzione del test durante la fase di raccolta, come errori di sintassi.

ts
import { describe } from 'vitest';

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

WARNING

Si noti che gli errori vengono serializzati in semplici oggetti: instanceof Error restituirà sempre false.

meta 3.1.0+ ​

ts
function meta(): TaskMeta;

Metadati personalizzati associati alla suite durante la sua esecuzione o raccolta. I metadati possono essere associati assegnando una proprietà all'oggetto task.meta durante l'esecuzione di un test:

ts
import { test } from 'vitest';

describe('the validation works correctly', task => {
  // assegna "decorated" durante la raccolta
  task.meta.decorated = false;

  test('some test', ({ task }) => {
    // assegna "decorated" durante l'esecuzione del test; sarà disponibile
    // solo nell'hook onTestCaseReady
    task.suite.meta.decorated = false;
  });
});

TIP

Se i metadati sono stati associati durante la fase di raccolta (al di fuori della funzione test), saranno disponibili nell'hook onTestModuleCollected all'interno del reporter personalizzato.

Pager
Pagina precedenteTestCase
Pagina successivaTestModule

Rilasciato sotto la licenza MIT.

Copyright (c) 2021-Present Vitest Team

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

Rilasciato sotto la licenza MIT.

Copyright (c) 2021-Present Vitest Team