TestSuite
Třída TestSuite
reprezentuje jednu testovací sadu. Tato třída je dostupná pouze v hlavním vlákně. Pokud pracujete s úlohami běžícími v runneru, viz "Runner API".
Instance TestSuite
má vždy vlastnost type
s hodnotou suite
. Můžete ji použít k rozlišení různých typů úloh:
if (task.type === 'suite') {
task; // TestSuite
}
project
Odkazuje na TestProject
, do kterého testovací sada patří.
module
Jedná se o přímý odkaz na TestModule
, kde je testovací sada definována.
name
Jedná se o název testovací sady, který byl předán funkci describe
.
import { describe } from 'vitest';
// [!code word:'the validation logic']
describe('the validation logic', () => {
// ...
});
fullName
Název sady, včetně všech nadřazených sad, oddělených symbolem >
. Tato sada má plný název "the validation logic > validating cities":
import { describe, test } from 'vitest';
// [!code word:'the validation logic']
// [!code word:'validating cities']
describe('the validation logic', () => {
describe('validating cities', () => {
// ...
});
});
id
Jedná se o jedinečný identifikátor sady. Toto ID je deterministické a zůstane stejné pro stejnou sadu při vícenásobných spuštěních. ID je založeno na názvu projektu, ID modulu a pořadí testovací sady.
ID vypadá takto:
1223128da3_0_0_0
^^^^^^^^^^ hash souboru
^ index testovací sady
^ index vnořené testovací sady
^ index testu
TIP
Hash souboru můžete vygenerovat pomocí funkce generateFileHash
z vitest/node
, která je dostupná od Vitest 3:
import { generateFileHash } from 'vitest/node';
const hash = generateFileHash(
'/file/path.js', // relativní cesta
undefined // název projektu nebo `undefined`, pokud není nastaven
);
DANGER
Nepokoušejte se ID parsovat. Může mít na začátku znaménko mínus: -1223128da3_0_0_0
.
location
Umístění v modulu, kde byla testovací sada definována. Umístění se shromažďují pouze v případě, že je v konfiguraci povolena možnost includeTaskLocation
. Všimněte si, že tato možnost je automaticky povolena, pokud se použijí příznaky --reporter=html
, --ui
nebo --browser
.
Umístění této testovací sady bude rovno { line: 3, column: 1 }
:
import { describe } from 'vitest'
describe('the validation works correctly', () => {
// ...
})
parent
Nadřazená testovací sada. Pokud byla testovací sada volána přímo uvnitř modulu, rodičem bude samotný modul.
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';
}
Možnosti, s nimiž byla testovací sada shromážděna.
children
Jedná se o kolekci všech testovacích sad a testů uvnitř aktuální testovací sady.
for (const task of suite.children) {
if (task.type === 'test') {
console.log('test', task.fullName);
} else {
// task je TestSuite
console.log('suite', task.name);
}
}
WARNING
Všimněte si, že suite.children
prochází pouze první úroveň vnoření, nepůjde hlouběji. Pokud potřebujete iterovat přes všechny testy nebo testovací sady, použijte children.allTests()
nebo children.allSuites()
. Pokud potřebujete iterovat přes vše, použijte rekurzivní funkci:
function visit(collection: TestCollection) {
for (const task of collection) {
if (task.type === 'suite') {
// zpracovat testovací sadu
visit(task.children);
} else {
// zpracovat test
}
}
}
ok
function ok(): boolean;
Kontroluje, zda testovací sada obsahuje nějaké neúspěšné testy. Také vrátí false
, pokud testovací sada selhala při shromažďování. V takovém případě zkontrolujte errors()
pro zjištění vyhozených chyb.
state
function state(): TestSuiteState;
Kontroluje stav spuštění testovací sady. Možné návratové hodnoty:
- pending: testy v této testovací sadě ještě nedokončily spuštění.
- failed: tato testovací sada má neúspěšné testy nebo ji nebylo možné shromáždit. Pokud
errors()
není prázdné, znamená to, že testovací sada selhala při shromažďování testů. - passed: každý test uvnitř této testovací sady prošel.
- skipped: tato testovací sada byla přeskočena během shromažďování.
WARNING
Všimněte si, že testovací modul má také metodu state
, která vrací stejné hodnoty, ale může také vrátit dodatečný stav queued
, pokud modul ještě nebyl spuštěn.
errors
function errors(): TestError[];
Chyby, které se vyskytly mimo spuštění testu během shromažďování, jako jsou syntaktické chyby.
import { describe } from 'vitest';
describe('collection failed', () => {
throw new Error('a custom error');
});
WARNING
Všimněte si, že chyby jsou serializovány do jednoduchých objektů: instanceof Error
vždy vrátí false
.
meta 3.1.0+
function meta(): TaskMeta;
Vlastní metadata, která byla připojena k testovací sadě během jejího spuštění nebo shromažďování. Metadata lze připojit přiřazením vlastnosti k objektu task.meta
během spuštění testu:
import { test } from 'vitest';
describe('the validation works correctly', task => {
// přiřadit "decorated" během shromažďování
task.meta.decorated = false;
test('some test', ({ task }) => {
// přiřadit "decorated" během spuštění testu; bude k dispozici
// pouze v hooku `onTestCaseReady`
task.suite.meta.decorated = false;
});
});
TIP
Pokud byla metadata připojena během shromažďování (mimo funkci test
), pak budou k dispozici v hooku onTestModuleCollected
ve vlastním reportéru.