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

Egyéni Pool ​

WARNING

Ez egy fejlett és rendkívül alacsony szintű API. Ha csak teszteket szeretne futtatni, valószínűleg nincs szüksége erre. Elsősorban könyvtárfejlesztők használják.

A Vitest a teszteket poolokban futtatja. Alapértelmezés szerint több pool létezik:

  • threads: tesztek futtatása node:worker_threads használatával (az izolációt új worker kontextus biztosítja)
  • forks: tesztek futtatása node:child_process használatával (az izolációt új child_process.fork folyamat biztosítja)
  • vmThreads: tesztek futtatása node:worker_threads használatával (de az izolációt a vm modul biztosítja új worker kontextus helyett)
  • browser: tesztek futtatása böngésző szolgáltatók használatával
  • typescript: típusellenőrzés futtatása a teszteken

Saját poolt egy fájlútvonal megadásával adhat meg:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    // alapértelmezés szerint minden fájlt egyéni poollal futtat
    pool: './my-custom-pool.ts',
    // az opciókat a `poolOptions` objektumban adhatja meg
    poolOptions: {
      myCustomPool: {
        customProperty: true,
      },
    },
  },
});

Ha különböző poolokban kell teszteket futtatnia, használja a projects funkciót:

ts
export default defineConfig({
  test: {
    projects: [
      {
        extends: true,
        test: {
          pool: 'threads',
        },
      },
    ],
  },
});

API ​

A pool opcióban megadott fájlnak egy függvényt kell exportálnia (lehet aszinkron), amely első paraméterként elfogadja a Vitest interfészt. Ennek a függvénynek egy ProcessPool interfésznek megfelelő objektumot kell visszaadnia:

ts
import type { ProcessPool, TestSpecification } from 'vitest/node';

export interface ProcessPool {
  name: string;
  runTests: (
    files: TestSpecification[],
    invalidates?: string[]
  ) => Promise<void>;
  collectTests: (
    files: TestSpecification[],
    invalidates?: string[]
  ) => Promise<void>;
  close?: () => Promise<void>;
}

A függvényt csak egyszer hívják meg (kivéve, ha a szerver konfigurációja frissült), és általában jó ötlet mindent inicializálni, amire a tesztekhez szüksége van a függvényen belül, és azt újra felhasználni, amikor a runTests meghívásra kerül.

A Vitest akkor hívja meg a runTests-t, amikor új teszteket ütemeznek futtatásra. Nem hívja meg, ha a files üres. Az első argumentum egy TestSpecification tömb. A fájlokat a sequencer rendezi, mielőtt a runTests meghívásra kerül. Lehetséges (de valószínűtlen), hogy ugyanaz a fájl kétszer is szerepeljen, de mindig más projekthez fog tartozni – ezt a projects konfigurációval valósítják meg.

A Vitest megvárja a runTests végrehajtását, mielőtt befejezi a futtatást (azaz csak a runTests feloldása után bocsátja ki az onFinished eseményt).

Ha egyéni poolt használ, akkor Önnek kell biztosítania a tesztfájlok futtatását és azok eredményeinek kezelését – ehhez hivatkozhat a vitest.state állapotra (a legfontosabbak a collectFiles és az updateTasks). A Vitest ehhez a @vitest/runner csomag startTests függvényét használja.

A Vitest meghívja a collectTests-t, ha a vitest.collect meghívásra kerül, vagy a vitest list parancsot CLI-n keresztül hívják meg. Ugyanúgy működik, mint a runTests, de nem kell teszt visszahívásokat futtatnia, csak a feladataikat kell jelentenie a vitest.state.collectFiles(files) meghívásával.

A különböző folyamatok közötti kommunikációhoz létrehozhat egy metódusokat tartalmazó objektumot a createMethodsRPC segítségével a vitest/node csomagból, és bármilyen kommunikációs formát használhat, amelyet előnyben részesít. Például, ha WebSockets-et szeretne használni a birpc-vel, írhat valami ilyesmit:

ts
import { createBirpc } from 'birpc';
import { parse, stringify } from 'flatted';
import { createMethodsRPC, TestProject } from 'vitest/node';

function createRpc(project: TestProject, wss: WebSocketServer) {
  return createBirpc(createMethodsRPC(project), {
    post: msg => wss.send(msg),
    on: fn => wss.on('message', fn),
    serialize: stringify,
    deserialize: parse,
  });
}

Egy egyszerű példát láthat egy teljesen a semmiből épített poolra, amely nem futtat teszteket, hanem összegyűjtöttként jelöli meg őket a pool/custom-pool.ts fájlban.

Pager
Előző oldalJelentéskészítők kiterjesztése
Következő oldalVitest konfigurálása

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/pool

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team