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 testuTIP
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.