Skip to content
Vitest 3
Main Navigation Útmutató & APIKonfigurációBöngésző módHaladó API
3.2.0
2.1.9
1.6.1
0.34.6

magyar

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

magyar

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

Megjelenés

Sidebar Navigation

API

Node API

Haladó API

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

Plugin API

Futtató API

Jelentők

Feladat metaadatok

Útmutató

Tesztfuttatás

Jelentéskészítők kiterjesztése

Egyéni Pool

Vitest konfigurálása

Teszt API Referencia

Ezen az oldalon

Feladat metaadatok ​

WARNING

A Vitest kísérleti jellegű privát API-t biztosít. A kompatibilitástörő változások nem mindig követik a SemVer-t, ezért kérjük, rögzítse a Vitest verzióját, amikor ezt az API-t használja.

Ha egyéni riportot fejleszt, vagy a Vitest Node.js API-t használja, hasznos lehet, ha adatokat ad át a különböző kontextusokban futó tesztekből a riportjának vagy egyéni Vitest kezelőjének.

Ennek megvalósításához a tesztkontextusra támaszkodni nem lehetséges, mivel az nem szerializálható. A Vitest azonban minden feladaton (csomag vagy teszt) elérhető meta tulajdonságot használhat az adatok megosztására a tesztek és a Node.js folyamat között. Fontos tudni, hogy ez a kommunikáció csak egyirányú, mivel a meta tulajdonság csak a tesztkontextuson belül módosítható. A Node.js kontextusban végzett bármilyen módosítás nem lesz látható a tesztekben.

A meta tulajdonságot a tesztkontextuson vagy a beforeAll/afterAll hookokon belül töltheti fel a tesztcsomag feladatokhoz.

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

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

Miután egy teszt befejeződött, a Vitest elküld egy feladatot, amely tartalmazza az eredményt és a meta adatokat a Node.js folyamatnak RPC-n keresztül, majd jelenti azt az onTestCaseResult és más hook-okban, amelyek hozzáférnek a feladatokhoz. A teszteset feldolgozásához használhatja a riporter implementációjában elérhető onTestCaseResult metódust:

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;

VIGYÁZAT

A Vitest különböző módszereket használ a Node.js folyamattal való kommunikációra.

  • Ha a Vitest worker thread-eken belül futtat teszteket, az adatokat üzenetporton keresztül küldi el.
  • Ha a Vitest child process-t használ, az adatok szerializált Buffer-ként kerülnek elküldésre a process.send API-n keresztül.
  • Ha a Vitest böngészőben futtat teszteket, az adatok a flatted csomaggal lesznek stringgé konvertálva.

Ez a tulajdonság minden tesztben jelen van a json riportban is, ezért győződjön meg róla, hogy az adatok JSON formátumba szerializálhatók.

Ellenőrizze azt is, hogy szerializálja az Error tulajdonságokat, mielőtt beállítja őket.

Ezt az információt a Vitest állapotán keresztül is elérheti, amikor a tesztek befejezték a futást:

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';

Lehetőség van a típusdefiníciók kiterjesztésére is TypeScript használatakor:

ts
declare module 'vitest' {
  interface TaskMeta {
    done?: boolean;
    custom?: string;
  }
}
Pager
Előző oldalJelentők
Következő oldalTesztfuttatás

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/metadata

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team