TestSuite
Klasa TestSuite
reprezentuje pojedynczą grupę testów. Jest ona dostępna wyłącznie w głównym wątku. Aby pracować z zadaniami wykonawczymi, zapoznaj się z sekcją "Runner API".
Instancja TestSuite
zawsze posiada właściwość type
o wartości suite
. Możesz jej użyć do rozróżniania różnych typów zadań:
if (task.type === 'suite') {
task; // TestSuite
}
project
Odwołuje się do TestProject
, do którego należy dany zestaw testów.
module
To bezpośrednie odwołanie do TestModule
, w którym zestaw testów jest zdefiniowany.
name
To nazwa zestawu testów przekazana do funkcji describe
.
import { describe } from 'vitest';
// [!code word:'the validation logic']
describe('the validation logic', () => {
// ...
});
fullName
Nazwa zestawu testów obejmująca wszystkie nadrzędne zestawy, oddzielone symbolem >
. Poniższy zestaw testów ma pełną nazwę "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
To unikalny identyfikator zestawu testów. Identyfikator ten jest deterministyczny i pozostanie taki sam dla tego samego zestawu testów w wielu uruchomieniach. Jest on oparty na nazwie projektu, identyfikatorze modułu oraz kolejności pakietu testów.
Identyfikator ma następującą strukturę:
1223128da3_0_0_0
^^^^^^^^^^ hash pliku
^ indeks pakietu testów
^ indeks zagnieżdżonego pakietu testów
^ indeks testu
TIP
Możesz wygenerować hash pliku za pomocą funkcji generateFileHash
z vitest/node
, dostępnej od Vitest 3:
import { generateFileHash } from 'vitest/node';
const hash = generateFileHash(
'/file/path.js', // ścieżka względna
undefined // nazwa projektu lub `undefined`, jeśli nie jest ustawiona
);
DANGER
Nie próbuj parsować identyfikatora. Może on mieć na początku znak minus: -1223128da3_0_0_0
.
location
Lokalizacja w module, w którym zdefiniowano zestaw testów. Lokalizacje są zbierane tylko wtedy, gdy w konfiguracji includeTaskLocation
jest włączona. Zauważ, że ta opcja jest automatycznie włączana, jeśli użyto flag --reporter=html
, --ui
lub --browser
.
Lokalizacja tego zestawu testów będzie równa { line: 3, column: 1 }
:
import { describe } from 'vitest'
describe('the validation works correctly', () => {
// ...
})
parent
Nadrzędny zestaw testów. Jeśli zestaw testów został wywołany bezpośrednio w module, jego rodzicem będzie sam moduł.
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';
}
Opcje, z którymi zestaw testów został zebrany.
children
To kolekcja wszystkich pakietów testów i testów w bieżącym zestawie testów.
for (const task of suite.children) {
if (task.type === 'test') {
console.log('test', task.fullName);
} else {
// task to TaskSuite
console.log('suite', task.name);
}
}
WARNING
Zauważ, że suite.children
iteruje tylko po pierwszym poziomie zagnieżdżenia, nie zagłębiając się. Jeśli potrzebujesz iterować po wszystkich testach lub pakietach testów, użyj children.allTests()
lub children.allSuites()
. Jeśli potrzebujesz iterować przez wszystko, użyj funkcji rekurencyjnej:
function visit(collection: TestCollection) {
for (const task of collection) {
if (task.type === 'suite') {
// przetwórz pakiet testów
visit(task.children);
} else {
// przetwórz test
}
}
}
ok
function ok(): boolean;
Sprawdza, czy w pakiecie testów są jakieś nieudane testy. Zwróci również false
, jeśli zestaw testów nie udało się zebrać. W takim przypadku sprawdź errors()
w poszukiwaniu zgłoszonych błędów.
state
function state(): TestSuiteState;
Sprawdza stan wykonania zestawu testów. Możliwe wartości zwracane:
- pending: testy w tym pakiecie testów jeszcze się nie zakończyły.
- failed: ten pakiet testów zawiera nieudane testy lub nie udało się go zebrać. Jeśli
errors()
nie jest puste, oznacza to, że zbieranie testów dla tego pakietu nie powiodło się. - passed: każdy test w tym pakiecie testów zakończył się pomyślnie.
- skipped: ten pakiet testów został pominięty podczas zbierania.
WARNING
Zauważ, że moduł testowy również posiada metodę state
, która zwraca te same wartości, ale może również zwrócić dodatkowy stan queued
, jeśli moduł nie został jeszcze uruchomiony.
errors
function errors(): TestError[];
Błędy, które wystąpiły poza wykonaniem testu podczas zbierania, takie jak błędy składniowe.
import { describe } from 'vitest';
describe('collection failed', () => {
throw new Error('a custom error');
});
WARNING
Zauważ, że błędy są serializowane jako proste obiekty: instanceof Error
zawsze zwróci false
.
meta 3.1.0+
function meta(): TaskMeta;
Niestandardowe metadane, które zostały dołączone do pakietu testów w trakcie jego wykonania lub zbierania. Metadane można dołączyć, przypisując właściwość do obiektu task.meta
w trakcie przebiegu testu:
import { test } from 'vitest';
describe('the validation works correctly', task => {
// ustaw "decorated" podczas zbierania
task.meta.decorated = false;
test('some test', ({ task }) => {
// ustaw "decorated" podczas przebiegu testu; będzie dostępne
// wyłącznie w hooku onTestCaseReady
task.suite.meta.decorated = false;
});
});
TIP
Jeśli metadane zostały dołączone podczas zbierania (poza funkcją test
), będą dostępne w hooku onTestModuleCollected
w niestandardowym raporcie testów.