TestSuite
A TestSuite
osztály egyetlen tesztcsomagot képvisel. Ez az osztály kizárólag a főszálon érhető el. Ha futásidőben végzett feladatokkal dolgozik, tekintse meg a "Futtató API" dokumentációját.
A TestSuite
példány mindig rendelkezik egy type
tulajdonsággal, amelynek értéke suite
. Ezt használhatja a különböző feladattípusok megkülönböztetésére:
if (task.type === 'suite') {
task; // TestSuite
}
project
Ez a TestProject
objektumra hivatkozik, amelyhez a tesztcsomag tartozik.
module
Ez egy közvetlen hivatkozás arra a TestModule
objektumra, amelyben a tesztcsomag definiálva van.
name
Ez a tesztcsomag neve, amelyet a describe
függvénynek adtak meg.
import { describe } from 'vitest';
// [!code word:'the validation logic']
describe('the validation logic', () => {
// ...
});
fullName
A tesztcsomag teljes neve, beleértve az összes szülő tesztcsomagot, >
szimbólummal elválasztva egymástól. Ennek a tesztcsomagnak a teljes neve "the validation logic > validating cities" lesz:
import { describe, test } from 'vitest';
// [!code word:'the validation logic']
// [!code word:'validating cities']
describe('the validation logic', () => {
describe('validating cities', () => {
// ...
});
});
id
Ez a tesztcsomag egyedi azonosítója. Ez az azonosító determinisztikus, és ugyanaz marad ugyanazon tesztcsomag esetén több futtatás során is. Az azonosító a projekt nevén, a modul azonosítóján és a tesztcsomag sorrendjén alapszik.
Az azonosító a következőképpen néz ki:
1223128da3_0_0_0
^^^^^^^^^^ a fájl hash-e
^ tesztcsomag indexe
^ beágyazott tesztcsomag indexe
^ teszt indexe
TIP
Fájl hash-t generálhat a vitest/node
generateFileHash
függvényével, amely a Vitest 3 verzió óta elérhető:
import { generateFileHash } from 'vitest/node';
const hash = generateFileHash(
'/file/path.js', // relatív elérési út
undefined // a projekt neve, vagy `undefined`, ha nincs beállítva
);
DANGER
Ne próbálja meg parszolni az azonosítót. Lehet, hogy mínusz jellel kezdődik: -1223128da3_0_0_0
.
location
A modulban az a hely, ahol a tesztcsomag definiálva lett. A helyek csak akkor kerülnek gyűjtésre, ha a konfigurációban engedélyezve van az includeTaskLocation
. Vegye figyelembe, hogy ez az opció automatikusan engedélyezve van, ha a --reporter=html
, --ui
vagy --browser
jelzőket használják.
Ennek a tesztcsomagnak a helye { line: 3, column: 1 }
lesz:
import { describe } from 'vitest'
describe('the validation works correctly', () => {
// ...
})
parent
A szülő tesztcsomag. Ha a tesztcsomagot közvetlenül a modulon belül hívták, a szülő maga a modul lesz.
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';
}
Az opciók, amelyekkel a tesztcsomagot összegyűjtötték.
children
Ez az aktuális tesztcsomagon belüli összes tesztcsomag és teszt gyűjteménye.
for (const task of suite.children) {
if (task.type === 'test') {
console.log('test', task.fullName);
} else {
// a feladat egy TaskSuite
console.log('suite', task.name);
}
}
WARNING
Vegye figyelembe, hogy a suite.children
csak az első szintű beágyazást fogja iterálni, nem fog mélyebbre hatolni. Ha az összes tesztet vagy tesztcsomagot iterálni szeretné, használja a children.allTests()
vagy a children.allSuites()
metódusokat. Ha mindent iterálni szeretne, használjon rekurzív függvényt:
function visit(collection: TestCollection) {
for (const task of collection) {
if (task.type === 'suite') {
// tesztcsomag naplózása
visit(task.children);
} else {
// teszt naplózása
}
}
}
ok
function ok(): boolean;
Ellenőrzi, hogy a tesztcsomag tartalmaz-e sikertelen tesztet. Ez akkor is false
értéket ad vissza, ha a tesztcsomag a gyűjtés során hibát észlelt. Ebben az esetben ellenőrizze az errors()
metódust a felmerült hibákért.
state
function state(): TestSuiteState;
Ellenőrzi a tesztcsomag futási állapotát. Lehetséges visszatérési értékek:
- pending: a tesztcsomagban lévő tesztek futása még nem fejeződött be.
- failed: ez a tesztcsomag sikertelen teszteket tartalmaz, vagy nem sikerült a gyűjtésük. Ha az
errors()
nem üres, az azt jelenti, hogy a tesztcsomag nem tudta a teszteket összegyűjteni. - passed: a tesztcsomagon belüli minden teszt sikeresen lefutott.
- skipped: ez a tesztcsomag kihagyásra került a gyűjtés során.
WARNING
Vegye figyelembe, hogy a tesztmodul is rendelkezik egy state
metódussal, amely ugyanazokat az értékeket adja vissza, de egy további queued
állapotot is visszaadhat, ha a modul még nem került végrehajtásra.
errors
function errors(): TestError[];
A teszt futtatásán kívül, a gyűjtés során felmerült hibák, például szintaktikai hibák.
import { describe } from 'vitest';
describe('collection failed', () => {
throw new Error('a custom error');
});
WARNING
Vegye figyelembe, hogy a hibák egyszerű objektumokká vannak szerializálva: az instanceof Error
mindig false
értéket ad vissza.
meta 3.1.0+
function meta(): TaskMeta;
Egyéni metaadatok, amelyek a tesztcsomaghoz lettek csatolva a végrehajtása vagy gyűjtése során. A metaadatok a task.meta
objektumhoz való tulajdonság hozzárendelésével csatolhatók a teszt futtatása során:
import { test } from 'vitest';
describe('the validation works correctly', task => {
// A "decorated" hozzárendelése a gyűjtés során
task.meta.decorated = false;
test('some test', ({ task }) => {
// A "decorated" hozzárendelése a teszt futtatása során,
// csak az `onTestCaseReady` hookban lesz elérhető
task.suite.meta.decorated = false;
});
});
TIP
Ha a metaadatokat a gyűjtés során (a test
függvényen kívül) csatolták, akkor azok elérhetők lesznek az onTestModuleCollected
hookban az egyéni riporterben.