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

Tesztfuttató ​

WARNING

Ez egy haladó szintű API. Ha csak teszteket futtatsz, valószínűleg nincs szükséged erre. Elsősorban könyvtárszerzők használják.

A tesztfuttató elérési útját a konfigurációs fájlban a runner opcióval adhatod meg. Ennek a fájlnak egy alapértelmezett exporttal kell rendelkeznie, amely egy osztályt tartalmaz, ami implementálja ezeket a metódusokat:

ts
export interface VitestRunner {
  /**
   * Elsőként meghívott metódus a tesztek gyűjtése és futtatása előtt.
   */
  onBeforeCollect?: (paths: string[]) => unknown;
  /**
   * A tesztek gyűjtése után, de az "onBeforeRun" előtt hívódik meg.
   */
  onCollected?: (files: File[]) => unknown;

  /**
   * Akkor hívódik meg, amikor a tesztfuttatónak le kell mondania a további tesztfuttatásokat.
   * A futtatónak figyelnie kell ezt a metódust, és a teszteket, valamint a tesztcsomagokat kihagyottként kell megjelölnie az
   * "onBeforeRunSuite" és "onBeforeRunTask" metódusokban, ha meghívják.
   */
  onCancel?: (reason: CancelReason) => unknown;

  /**
   * Egyetlen teszt futtatása előtt hívódik meg. Még nincs 'result' értéke.
   */
  onBeforeRunTask?: (test: TaskPopulated) => unknown;
  /**
   * Ez a metódus a tesztfüggvény tényleges futtatása előtt hívódik meg. Már van "eredménye", amely tartalmazza az "állapotot" és a "kezdési időt".
   */
  onBeforeTryTask?: (
    test: TaskPopulated,
    options: { retry: number; repeats: number }
  ) => unknown;
  /**
   * Az eredmény és az állapot beállítása után hívódik meg.
   */
  onAfterRunTask?: (test: TaskPopulated) => unknown;
  /**
   * Ez a metódus közvetlenül a tesztfüggvény futtatása után hívódik meg. Még nincs új állapota. Nem lesz meghívva, ha a tesztfüggvény hibát dob.
   */
  onAfterTryTask?: (
    test: TaskPopulated,
    options: { retry: number; repeats: number }
  ) => unknown;

  /**
   * Egyetlen tesztcsomag futtatása előtt hívódik meg. Még nincs 'result' értéke.
   */
  onBeforeRunSuite?: (suite: Suite) => unknown;
  /**
   * Egyetlen tesztcsomag futtatása után hívódik meg. Van állapota és eredménye.
   */
  onAfterRunSuite?: (suite: Suite) => unknown;

  /**
   * Ha definiálva van, a szokásos Vitest tesztcsomag particionálás és kezelés helyett kerül meghívásra.
   * A 'before' és 'after' hook-ok figyelembe lesznek véve.
   */
  runSuite?: (suite: Suite) => Promise<void>;
  /**
   * Ha definiálva van, a szokásos Vitest kezelés helyett lesz meghívva. Hasznos, ha egyedi tesztfüggvényed van.
   * A 'before' és 'after' hook-ok figyelembe lesznek véve.
   */
  runTask?: (test: TaskPopulated) => Promise<void>;

  /**
   * Akkor kerül meghívásra, amikor egy feladat frissítésre kerül. Ugyanaz, mint az "onTaskUpdate" egy reporterben, de ez ugyanabban a szálban fut, mint a tesztek.
   */
  onTaskUpdate?: (task: [string, TaskResult | undefined][]) => Promise<void>;

  /**
   * Az összes teszt futtatása előtt hívódik meg a gyűjtött útvonalakon.
   */
  onBeforeRunFiles?: (files: File[]) => unknown;
  /**
   * Közvetlenül az összes teszt futtatása után hívódik meg a gyűjtött útvonalakon.
   */
  onAfterRunFiles?: (files: File[]) => unknown;
  /**
   * Akkor hívódik meg, amikor egy teszthez új kontextus van definiálva. Hasznos, ha egyedi tulajdonságokat szeretnél hozzáadni a kontextushoz.
   * Ha csak egyedi kontextust szeretnél definiálni egy futtatóval, fontold meg a "beforeAll" használatát a "setupFiles"-ban helyette.
   *
   * Ez a metódus a "test" és a "custom" kezelőkhöz is meghívódik.
   *
   * @see https://www.getbook.com/hu/book/vitest-1/advanced/runner#your-task-function
   */
  extendTaskContext?: <T extends Test | Custom>(
    context: TaskContext<T>
  ) => TaskContext<T>;
  /**
   * Akkor hívódik meg, amikor bizonyos fájlok importálásra kerülnek. Két esetben hívható meg: tesztek gyűjtésekor és beállítási fájlok importálásakor.
   */
  importFile: (filepath: string, source: VitestRunnerImportSource) => unknown;
  /**
   * Nyilvánosan elérhető konfiguráció.
   */
  config: VitestRunnerConfig;
}

Az osztály inicializálásakor a Vitest átadja a Vitest konfigurációt - ezt egy config tulajdonságként kell elérhetővé tenned.

WARNING

A Vitest injektál egy ViteNodeRunner példányt is __vitest_executor tulajdonságként. Ezt használhatod a fájlok feldolgozására az importFile metódusban (ez a TestRunner és a BenchmarkRunner alapértelmezett viselkedése).

A ViteNodeRunner elérhetővé teszi az executeId metódust, amelyet a tesztfájlok importálására használnak egy Vite-barát környezetben. Ez azt jelenti, hogy futásidőben feloldja az importokat és átalakítja a fájl tartalmát, hogy a Node értelmezni tudja.

TIP

A pillanatkép-támogatás (snapshot support) és néhány más funkció a futtatótól függ. Ha nem szeretnéd elveszíteni, kiterjesztheted a tesztfuttatódat a VitestTestRunner osztályból, amelyet a vitest/runners csomagból importálhatsz. Ez elérhetővé teszi a BenchmarkNodeRunner-t is, ha ki szeretnéd terjeszteni a benchmark funkcionalitást.

Egyéni feladatok ​

Kiterjesztheted a Vitest feladat-rendszerét a saját feladataiddal. A feladat egy objektum, amely a tesztcsomag része. Ez automatikusan hozzáadódik az aktuális tesztcsomaghoz egy suite.task metódussal:

js
// ./utils/custom.js
import { createTaskCollector, getCurrentSuite, setFn } from 'vitest/suite';

export { describe, beforeAll, afterAll } from 'vitest';

// Ez a függvény a gyűjtési fázisban kerül meghívásra:
// Itt ne hívja meg a függvénykezelőt, hanem adja hozzá a csomagfeladatokhoz
// a "getCurrentSuite().task()" metódussal
// megjegyzés: a createTaskCollector támogatja a "todo"/"each"/... funkciókat
export const myCustomTask = createTaskCollector(function (name, fn, timeout) {
  getCurrentSuite().task(name, {
    ...this, // so "todo"/"skip"/... is tracked correctly
    meta: {
      customPropertyToDifferentiateTask: true,
    },
    handler: fn,
    timeout,
  });
});
js
// ./garden/tasks.test.js
import { afterAll, beforeAll, describe, myCustomTask } from '../custom.js';
import { gardener } from './gardener.js';

describe('take care of the garden', () => {
  beforeAll(() => {
    gardener.putWorkingClothes();
  });

  myCustomTask('weed the grass', () => {
    gardener.weedTheGrass();
  });
  myCustomTask.todo('mow the lawn', () => {
    gardener.mowerTheLawn();
  });
  myCustomTask('water flowers', () => {
    gardener.waterFlowers();
  });

  afterAll(() => {
    gardener.goHome();
  });
});
bash
vitest ./garden/tasks.test.js

WARNING

Ha nincs egyedi futtatód, vagy nem definiáltad a runTest metódust, a Vitest megpróbálja automatikusan lekérni a feladatot. Ha nem adtál hozzá függvényt a setFn-nel, akkor az sikertelen lesz.

TIP

Az egyedi feladatrendszer támogatja a hook-okat és a kontextusokat. Ha támogatni szeretnéd a tulajdonság-láncolást (mint például az only, skip és a saját egyedi tulajdonságaid), importálhatod a createChainable-t a vitest/suite-ből, és becsomagolhatod a függvényedet vele. Ebben az esetben a custom metódust custom.call(this) formában kell meghívnod.

Pager
Előző oldalNode API
Következő oldalFeladat Metaadatok

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors

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

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors