TestCase
Třída TestCase reprezentuje jeden test. Tato třída je dostupná pouze v hlavním vlákně. Pokud pracujete s úlohami za běhu, podívejte se na "Runner API".
Instance TestCase má vždy vlastnost type s hodnotou test. Lze ji použít k rozlišení různých typů úloh:
if (task.type === 'test') {
task; // TestCase
}project
Odkazuje na TestProject, do kterého test patří.
module
Toto je přímý odkaz na TestModule, kde je test definován.
name
Jedná se o název testu předaný funkci test.
import { test } from 'vitest';
// [!code word:'the validation works correctly']
test('the validation works correctly', () => {
// ...
});fullName
Název testu včetně všech nadřazených testovacích sad oddělených symbolem >. Tento test má plný název "the validation logic > the validation works correctly":
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
Jedná se o jedinečný identifikátor testu. Toto ID je deterministické a bude stejné pro stejný test při více spuštěních. ID je založeno na názvu projektu, ID modulu a pořadí testu.
ID vypadá takto:
1223128da3_0_0
^^^^^^^^^^ hash souboru
^ index sady
^ index testuTIP
Hash souboru můžete vygenerovat pomocí funkce generateFileHash z vitest/node, která je k dispozici 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 parsovat ID. Může mít na začátku záporné znaménko: -1223128da3_0_0_0.
location
Umístění v modulu, kde byl test definován. Umístění se shromažďují pouze v případě, že je v konfiguraci povolena includeTaskLocation. Všimněte si, že tato možnost je automaticky povolena, pokud jsou použity příznaky --reporter=html, --ui nebo --browser.
Umístění tohoto testu bude rovno { line: 3, column: 1 }:
import { test } from 'vitest'
test('the validation works correctly', () => {
// ...
})parent
Nadřazená sada. Pokud byl test volán přímo uvnitř modulu, rodičem je 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';
}Nastavení, se kterými byl test shromážděn.
ok
function ok(): boolean;Kontroluje, zda test nezpůsobil selhání sady. Pokud test ještě není dokončen nebo byl přeskočen, vrátí true.
meta
function meta(): TaskMeta;Vlastní metadata, která byla připojena k testu během jeho provádění. Metadata lze připojit přiřazením vlastnosti k objektu ctx.task.meta během spuštění testu:
import { test } from 'vitest';
test('the validation works correctly', ({ task }) => {
// ...
task.meta.decorated = false;
});Pokud test ještě nedokončil běh, meta bude prázdný objekt.
result
function result(): TestResult;Výsledky testování. Pokud test ještě není dokončen nebo byl právě načten, bude roven TestResultPending:
export interface TestResultPending {
/**
* Test byl načten, ale ještě nedokončil běh.
*/
readonly state: 'pending';
/**
* Čekající testy nemají žádné chyby.
*/
readonly errors: undefined;
}Pokud byl test přeskočen, návratová hodnota bude TestResultSkipped:
interface TestResultSkipped {
/**
* Test byl přeskočen s příznakem `skip` nebo `todo`.
* Můžete zjistit, který byl použit v možnosti `options.mode`.
*/
readonly state: 'skipped';
/**
* Přeskočené testy nemají žádné chyby.
*/
readonly errors: undefined;
/**
* Vlastní poznámka předaná do `ctx.skip(note)`.
*/
readonly note: string | undefined;
}TIP
Pokud byl test přeskočen, protože jiný test má příznak only, options.mode bude rovno skip.
Pokud test selhal, návratová hodnota bude TestResultFailed:
interface TestResultFailed {
/**
* Test se nepodařilo provést.
*/
readonly state: 'failed';
/**
* Chyby, které vznikly během provádění testu.
*/
readonly errors: ReadonlyArray<TestError>;
}Pokud test proběhl úspěšně, návratová hodnota bude TestResultPassed:
interface TestResultPassed {
/**
* Test proběhl úspěšně.
*/
readonly state: 'passed';
/**
* Chyby, které vznikly během provádění testu.
*/
readonly errors: ReadonlyArray<TestError> | undefined;
}WARNING
Všimněte si, že test se stavem passed může mít stále připojené chyby – to se může stát, pokud bylo spuštěno retry alespoň jednou.
diagnostic
function diagnostic(): TestDiagnostic | undefined;Užitečné informace o testu, jako je doba trvání, využití paměti atd.:
interface TestDiagnostic {
/**
* Pokud doba trvání testu přesahuje `slowTestThreshold`.
*/
readonly slow: boolean;
/**
* Množství paměti, které test použil, v bajtech.
* Tato hodnota je dostupná pouze v případě, že test byl proveden s příznakem `logHeapUsage`.
*/
readonly heap: number | undefined;
/**
* Doba potřebná k provedení testu v ms.
*/
readonly duration: number;
/**
* Čas spuštění testu v ms.
*/
readonly startTime: number;
/**
* Počet opakování, kolikrát byl test zopakován.
*/
readonly retryCount: number;
/**
* Počet opakování, kolikrát byl test zopakován podle konfigurace volby `repeats`.
* Tato hodnota může být nižší, pokud test selhal během opakování a není nakonfigurováno žádné `retry`.
*/
readonly repeatCount: number;
/**
* Pokud test prošel při druhém pokusu.
*/
readonly flaky: boolean;
}INFO
diagnostic() vrátí undefined, pokud test ještě nebyl naplánován ke spuštění.