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 testu
TIP
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í.