TestCase
A TestCase
osztály egyetlen tesztet reprezentál. Ez az osztály kizárólag a fő szálon érhető el. Ha futásidejű feladatokkal dolgozik, tekintse meg a "Runner API" dokumentációját.
A TestCase
példány mindig rendelkezik egy type
tulajdonsággal, melynek értéke test
. Ezt használhatja a különböző feladattípusok megkülönböztetésére:
if (task.type === 'test') {
task; // TestCase
}
project
Ez a TestProject
objektumra mutat, amelyhez a teszt tartozik.
module
Ez egy közvetlen hivatkozás arra a TestModule
-ra, ahol a teszt definiálva van.
name
Ez a teszt neve, amelyet a test
függvénynek átadtak.
import { test } from 'vitest';
// [!code word:'a validáció helyesen működik']
test('the validation works correctly', () => {
// ...
});
fullName
A teszt teljes neve, beleértve az összes szülő tesztcsomagot, >
szimbólummal elválasztva. Ennek a tesztnek a teljes neve "a validációs logika > a validáció helyesen működik":
import { describe, test } from 'vitest';
// [!code word:'the validation works correctly']
// [!code word:'the validation logic']
describe('the validation logic', () => {
test('the validation works correctly', () => {
// ...
});
});
id
Ez a teszt egyedi azonosítója. Ez az azonosító determinisztikus, és ugyanaz marad ugyanazon teszt számára több futtatás során is. Az azonosító a projekt nevén, a modul azonosítóján és a teszt sorrendjén alapul.
Az azonosító formátuma a következő:
1223128da3_0_0
^^^^^^^^^^ a fájl hash
^ csomag index
^ teszt index
TIP
Fájl hash-t generálhat a vitest/node
generateFileHash
függvényével, amely a Vitest 3-tól kezdve 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 elemezni az azonosítót. Kezdődhet mínusz jellel is: -1223128da3_0_0_0
.
location
A modulon belüli hely, ahol a tesztet definiálták. A helyek csak akkor kerülnek gyűjtésre, ha a includeTaskLocation
engedélyezve van a konfigurációban. Megjegyzendő, hogy ez az opció automatikusan engedélyezve van, ha a --reporter=html
, --ui
vagy --browser
jelzőket használják.
Ennek a tesztnek a helye { line: 3, column: 1 }
lesz:
import { test } from 'vitest'
test('the validation works correctly', () => {
// ...
})
parent
Szülő tesztcsomag. Ha a tesztet közvetlenül a modulon belül hívták meg, 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 tesztet összegyűjtötték.
ok
function ok(): boolean;
Ellenőrzi, hogy a teszt nem okozott-e hibát a tesztcsomagban. Ha a teszt még nem fejeződött be, vagy kihagyták, true
értéket ad vissza.
meta
function meta(): TaskMeta;
Egyéni metaadatok, amelyek a teszthez csatolásra kerültek a végrehajtás során. A metaadatok a ctx.task.meta
objektum egy tulajdonságának hozzárendelésével csatolhatók egy tesztfutás során:
import { test } from 'vitest';
test('the validation works correctly', ({ task }) => {
// ...
task.meta.decorated = false;
});
Ha a teszt még nem fejeződött be, a metaadatok egy üres objektum lesz.
result
function result(): TestResult;
A teszt eredményei. Ha a teszt még nem fejeződött be, vagy csak gyűjtésre került, akkor TestResultPending
értékkel lesz egyenlő:
export interface TestResultPending {
/**
* A tesztet összegyűjtötték, de még nem fejeződött be a futása.
*/
readonly state: 'pending';
/**
* A folyamatban lévő teszteknek nincs hibájuk.
*/
readonly errors: undefined;
}
Ha a tesztet kihagyták, a visszatérési érték TestResultSkipped
lesz:
interface TestResultSkipped {
/**
* A tesztet kihagyták a `skip` vagy `todo` jelzővel.
* Az `options.mode` opcióban láthatja, melyiket használták.
*/
readonly state: 'skipped';
/**
* Az átugrott teszteknek nincs hibájuk.
*/
readonly errors: undefined;
/**
* Egy egyéni megjegyzés, amelyet a `ctx.skip(note)`-nak átadtak.
*/
readonly note: string | undefined;
}
TIP
Ha a tesztet azért hagyták ki, mert egy másik tesztnek only
jelzője van, az options.mode
értéke skip
lesz.
Ha a teszt sikertelen volt, a visszatérési érték TestResultFailed
lesz:
interface TestResultFailed {
/**
* A teszt végrehajtása meghiúsult.
*/
readonly state: 'failed';
/**
* A teszt végrehajtása során fellépő hibák.
*/
readonly errors: ReadonlyArray<TestError>;
}
Ha a teszt sikeres volt, a visszatérési érték TestResultPassed
lesz:
interface TestResultPassed {
/**
* A teszt sikeresen lefutott.
*/
readonly state: 'passed';
/**
* A teszt végrehajtása során fellépő hibák, vagy `undefined`.
*/
readonly errors: ReadonlyArray<TestError> | undefined;
}
WARNING
Vegye figyelembe, hogy a passed
állapotú tesztnek még lehetnek hozzárendelt hibái – ez akkor fordulhat elő, ha a retry
legalább egyszer aktiválódott.
diagnostic
function diagnostic(): TestDiagnostic | undefined;
Hasznos információk a tesztről, például a futási idő, memóriahasználat stb.:
interface TestDiagnostic {
/**
* Igaz, ha a teszt futási ideje meghaladja a `slowTestThreshold` értéket.
*/
readonly slow: boolean;
/**
* A teszt által felhasznált memória mennyisége bájtban.
* Ez az érték csak akkor érhető el, ha a tesztet a `logHeapUsage` jelzővel futtatták.
*/
readonly heap: number | undefined;
/**
* A teszt végrehajtásához szükséges idő ms-ben.
*/
readonly duration: number;
/**
* A teszt indításának időpontja ms-ben.
*/
readonly startTime: number;
/**
* Ahányszor a tesztet újrapróbálták.
*/
readonly retryCount: number;
/**
* Ahányszor a tesztet megismételték a `repeats` opció szerint.
* Ez az érték alacsonyabb lehet, ha a teszt a megismétlés során sikertelen volt, és nincs konfigurálva újrapróbálkozás.
*/
readonly repeatCount: number;
/**
* Igaz, ha a teszt egy második újrapróbálkozásra sikeres volt.
*/
readonly flaky: boolean;
}
INFO
A diagnostic()
undefined
értéket ad vissza, ha a tesztet még nem ütemezték be futtatásra.