Skip to content
Vitest 1
Main Navigation ÚtmutatóAPIKonfigurációHaladó
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

Haladó

Node API

Tesztfuttató

Feladat Metaadatok

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

Egyéni Készlet

Ezen az oldalon

Feladat Metaadatok ​

WARNING

A Vitest kísérleti, privát API-t kínál. A kompatibilitástörő változások nem feltétlenül követik a szemantikus verziózást (semver), ezért kérjük, rögzítse a Vitest verzióját, amikor használja.

Ha egyedi riportálót fejleszt, vagy a Vitest Node.js API-ját használja, hasznos lehet adatokat átadni a különböző kontextusokban végrehajtott tesztekből a riportálónak vagy az egyedi Vitest kezelőnek.

Ennek elérésére a tesztkörnyezet használata nem megfelelő, mivel az nem szerializálható. A Vitesttel azonban felhasználhatja a meta tulajdonságot, amely minden feladaton (tesztcsoportban vagy teszten) elérhető, hogy adatokat osszon meg a tesztek és a Node.js folyamat között. Fontos megjegyezni, hogy ez a kommunikáció csak egyirányú, mivel a meta tulajdonság csak a tesztkörnyezeten belülről módosítható. A Node.js környezetben végzett bármilyen módosítás nem lesz látható a tesztekben.

A meta tulajdonságot beállíthatja a tesztkörnyezetben vagy a beforeAll/afterAll hook-okon belül a tesztcsoport feladataihoz.

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

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

A teszt befejezése után a Vitest RPC használatával elküldi a Node.js folyamatnak a feladatot, annak eredményét és a meta adatokat. A feladat elfogásához és feldolgozásához használhatja az onTaskUpdate metódust, amely elérhető a riportáló implementációjában.

ts
// custom-reporter.js
export default {
  // szükség esetén elfoghatja a *csomagokat*
  onTaskUpdate(packs) {
    const [id, result, meta] = packs[0]
  },
  // a meta minden feladaton elérhető az "onFinished" során
  onFinished(files) {
    files[0].meta.done === true
    files[0].tasks[0].meta.custom === 'some-custom-handler'
  }
}

WARNING

A Vitest egyszerre több feladatot is küldhet, ha több teszt is rövid időn belül befejeződik.

VIGYÁZAT

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

  • Ha a Vitest worker szálakon futtat teszteket, az adatokat üzenetporton keresztül küldi.
  • Ha a Vitest gyermekfolyamatot használ, az adatokat szerializált Bufferként küldi el a process.send API-n keresztül.
  • Ha a Vitest a böngészőben futtat teszteket, az adatokat a flatted csomag segítségével stringifikálja.

Általános szabályként szinte bármit elküldhet, kivéve a függvényeket, a Promise-eket és a reguláris kifejezéseket. A v8.stringify függvény nem tudja szerializálni a reguláris kifejezéseket, de elküldheti a string verziójukat, és elemezheti azokat a Node.js folyamatban. Más nem szerializálható adatokat sem küldhet, de lehetnek benne ciklikus hivatkozások.

Továbbá, a beállításuk előtt győződjön meg róla, hogy szerializálja a Hiba tulajdonságokat.

Ezek az információk a Vitest állapotából is lekérhetők a tesztek futásának befejezése után:

ts
const vitest = await createVitest('test')
await vitest.start()
vitest.state.getFiles()[0].meta.done === true
vitest.state.getFiles()[0].tasks[0].meta.custom === 'some-custom-handler'

TypeScript használata esetén a típusdefiníciók kiterjesztése is lehetséges:

ts
declare module 'vitest' {
  interface TaskMeta {
    done?: boolean
    custom?: string
  }
}
Pager
Előző oldalTesztfuttató
Következő oldalJelentéskészítők kiterjesztése

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors

https://v1.vitest.dev/advanced/metadata

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors