Skip to content
Vitest 3
Main Navigation Przewodnik & APIKonfiguracjaTryb przeglądarkiZaawansowane API
3.2.0
2.1.9
1.6.1
0.34.6

Polski

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Türkçe
čeština
magyar

Polski

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Türkçe
čeština
magyar

Wygląd

Sidebar Navigation

API

Node API

Zaawansowane API

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API wtyczek

API modułu uruchamiającego

Reportery

Metadane zadań

Przewodnik

Uruchamianie testów

Rozszerzanie Reporterów

Niestandardowa pula

Konfiguracja Vitest

Dokumentacja API testowego

Na tej stronie

Metadane zadań ​

WARNING

Vitest udostępnia eksperymentalne prywatne API. Zmiany powodujące niezgodność wsteczną mogą nie być zgodne z SemVer, dlatego zaleca się przypięcie wersji Vitest, gdy z niego korzystasz.

Jeśli tworzysz własny raport lub używasz API Vitest Node.js, przydatne może być przekazywanie danych z testów wykonywanych w różnych kontekstach do Twojego reportera lub niestandardowego handlera Vitest.

Aby to osiągnąć, opieranie się na kontekście testu nie jest możliwe, ponieważ nie można go serializować. Jednak z Vitest możesz wykorzystać właściwość meta dostępną dla każdego zadania (grupy testów lub pojedynczego testu), aby udostępniać dane między testami a procesem Node.js. Ważne jest, aby pamiętać, że komunikacja ta jest jednokierunkowa, ponieważ właściwość meta może być modyfikowana tylko w kontekście testu. Wszelkie zmiany wprowadzone w kontekście Node.js nie będą widoczne w testach.

Możesz uzupełnić właściwość meta w kontekście testu lub w hookach beforeAll/afterAll dla grup testów.

ts
afterAll(suite => {
  suite.meta.done = true;
});

test('custom', ({ task }) => {
  task.meta.custom = 'some-custom-handler';
});

Po zakończeniu testu Vitest prześle zadanie zawierające wynik i meta do procesu Node.js za pomocą RPC, a następnie udostępni je w onTestCaseResult i innych hookach, które mają dostęp do zadań. Aby przetworzyć ten wynik testu, możesz użyć metody onTestCaseResult dostępnej w Twojej implementacji reportera:

ts
import type { Reporter, TestCase, TestModule } from 'vitest/node';

export default {
  onTestCaseResult(testCase: TestCase) {
    // custom === 'some-custom-handler' ✅
    const { custom } = testCase.meta();
  },
  onTestRunEnd(testModule: TestModule) {
    testModule.meta().done === true;
    testModule.children.at(0).meta().custom === 'some-custom-handler';
  },
} satisfies Reporter;

BEWARE

Vitest używa różnych metod do komunikacji z procesem Node.js.

  • Jeśli Vitest uruchamia testy w wątkach roboczych, prześle dane za pośrednictwem portu wiadomości
  • Jeśli Vitest używa procesu potomnego, dane zostaną przesłane jako serializowany bufor za pośrednictwem API process.send
  • Jeśli Vitest uruchamia testy w przeglądarce, dane zostaną zserializowane do ciągu znaków za pomocą pakietu flatted

Ta właściwość jest również dostępna w każdym teście w raporcie json, więc upewnij się, że dane mogą być serializowane do formatu JSON.

Upewnij się również, że serializujesz obiekty błędów zanim je przypiszesz.

Możesz również uzyskać te informacje z obiektu stanu Vitest po zakończeniu testów:

ts
const vitest = await createVitest('test');
const { testModules } = await vitest.start();

const testModule = testModules[0];
testModule.meta().done === true;
testModule.children.at(0).meta().custom === 'some-custom-handler';

Można również rozszerzyć definicje typów, gdy korzystasz z TypeScript:

ts
declare module 'vitest' {
  interface TaskMeta {
    done?: boolean;
    custom?: string;
  }
}
Pager
Poprzednia stronaReportery
Następna stronaUruchamianie testów

Opublikowano na licencji MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/metadata

Opublikowano na licencji MIT.

Copyright (c) 2021-Present Vitest Team