Skip to content
Vitest 1
Main Navigation PrůvodceAPIKonfiguracePokročilý
3.2.0
2.1.9
1.6.1
0.34.6

čeština

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

čeština

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

Vzhled

Sidebar Navigation

Node API

Test Runner (Spouštěč testů)

Metadata úloh

Rozšíření reportérů

Vlastní pool

Na této stránce

Test Runner (Spouštěč testů) ​

WARNING

Toto je pokročilé API. Pokud pouze spouštíte testy, pravděpodobně ho nebudete potřebovat. Primárně je určeno pro autory knihoven.

Cestu ke svému spouštěči testů můžete zadat pomocí volby runner v konfiguračním souboru. Tento soubor by měl mít výchozí export s třídou implementující následující metody:

ts
export interface VitestRunner {
  /**
   * První metoda, která se volá před samotným sběrem a spouštěním testů.
   */
  onBeforeCollect?: (paths: string[]) => unknown;
  /**
   * Volá se po sběru testů a před "onBeforeRun".
   */
  onCollected?: (files: File[]) => unknown;

  /**
   * Volá se, když má spouštěč testů zrušit další spouštění testů.
   * Spouštěč by měl reagovat na toto volání a označit testy a sady jako přeskočené v
   * "onBeforeRunSuite" a "onBeforeRunTask", pokud je tato metoda volána.
   */
  onCancel?: (reason: CancelReason) => unknown;

  /**
   * Volá se před spuštěním jednoho testu. Ještě nemá 'výsledek'.
   */
  onBeforeRunTask?: (test: TaskPopulated) => unknown;
  /**
   * Volá se před samotným spuštěním testovací funkce. Již má "result" se "state" a "startTime".
   */
  onBeforeTryTask?: (
    test: TaskPopulated,
    options: { retry: number; repeats: number }
  ) => unknown;
  /**
   * Volá se po nastavení výsledku a stavu testu.
   */
  onAfterRunTask?: (test: TaskPopulated) => unknown;
  /**
   * Volá se po spuštění testovací funkce. Ještě nemá nový stav. Nebude volána, pokud testovací funkce vyhodí chybu.
   */
  onAfterTryTask?: (
    test: TaskPopulated,
    options: { retry: number; repeats: number }
  ) => unknown;

  /**
   * Volá se před spuštěním jedné sady testů. Ještě nemá "result".
   */
  onBeforeRunSuite?: (suite: Suite) => unknown;
  /**
   * Volá se po spuštění jedné sady testů. Má stav a výsledek.
   */
  onAfterRunSuite?: (suite: Suite) => unknown;

  /**
   * Pokud je definována, bude volána namísto obvyklého rozdělení a zpracování sady Vitest.
   * "before" a "after" háky nebudou ignorovány.
   */
  runSuite?: (suite: Suite) => Promise<void>;
  /**
   * Pokud je definována, bude volána místo obvyklého zpracování testů Vitest. Užitečné, pokud máte vlastní testovací funkci.
   * "before" a "after" háky nebudou ignorovány.
   */
  runTask?: (test: TaskPopulated) => Promise<void>;

  /**
   * Volá se, když je úkol aktualizován. Stejné jako "onTaskUpdate" v reportéru, ale toto běží ve stejném vlákně jako testy.
   */
  onTaskUpdate?: (task: [string, TaskResult | undefined][]) => Promise<void>;

  /**
   * Volá se před spuštěním všech testů v sebraných cestách.
   */
  onBeforeRunFiles?: (files: File[]) => unknown;
  /**
   * Volá se po spuštění všech testů v sebraných cestách.
   */
  onAfterRunFiles?: (files: File[]) => unknown;
  /**
   * Volá se, když je definován nový kontext pro test. Užitečné, pokud chcete přidat vlastní vlastnosti do kontextu.
   * Pokud chcete definovat vlastní kontext pouze pomocí spouštěče, zvažte použití "beforeAll" v konfiguračním souboru místo toho.
   *
   * Tato metoda se volá pro obslužné rutiny "test" i "custom".
   *
   * @see https://www.getbook.com/cs/book/vitest-1/advanced/runner#your-task-function
   */
  extendTaskContext?: <T extends Test | Custom>(
    context: TaskContext<T>
  ) => TaskContext<T>;
  /**
   * Volá se, když jsou importovány určité soubory. Může být volána ve dvou situacích: při sběru testů a při importu konfiguračních souborů.
   */
  importFile: (filepath: string, source: VitestRunnerImportSource) => unknown;
  /**
   * Veřejně dostupná konfigurace.
   */
  config: VitestRunnerConfig;
}

Při inicializaci této třídy Vitest předává konfiguraci Vitest - měli byste ji zpřístupnit jako vlastnost config.

WARNING

Vitest také injektuje instanci ViteNodeRunner jako vlastnost __vitest_executor. Můžete ji použít ke zpracování souborů v metodě importFile (toto je výchozí chování TestRunner a BenchmarkRunner).

ViteNodeRunner poskytuje metodu executeId, která se používá k importu testovacích souborů v prostředí kompatibilním s Vite. To znamená, že bude řešit importy a transformovat obsah souboru za běhu, aby mu Node rozuměl.

TIP

Podpora snapshotů a některé další funkce závisí na spouštěči. Pokud je nechcete ztratit, můžete svůj spouštěč rozšířit z VitestTestRunner importovaného z vitest/runners. Zpřístupňuje také BenchmarkNodeRunner, pokud chcete rozšířit funkčnost benchmarků.

Your task function (Funkce pro vlastní úkoly) ​

Můžete rozšířit systém úkolů Vitest o své vlastní úkoly. Úkol je objekt, který je součástí sady. Automaticky se přidává do aktuální sady pomocí metody suite.task:

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

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

// Tato funkce bude volána během fáze shromažďování:
// Zde nevolajte obslužnou rutinu funkce, přidejte ji do úkolů sady
// Pomocí metody "getCurrentSuite().task()"
// Poznámka: createTaskCollector poskytuje podporu pro "todo"/"each"/...
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

Pokud nemáte vlastní spouštěč nebo jste nedefinovali metodu runTest, Vitest se pokusí úkol načíst automaticky. Pokud jste nepřidali funkci pomocí setFn, test selže.

TIP

Vlastní systém úkolů podporuje háky a kontexty. Pokud chcete podporovat řetězení vlastností (jako only, skip a vaše vlastní), můžete importovat createChainable z vitest/suite a zabalit svou funkci s ním. V takovém případě budete muset volat custom jako custom.call(this).

Pager
Předchozí stránkaNode API
Další stránkaMetadata úloh

Vydáno pod licencí MIT.

Copyright (c) 2021-Present Vitest Team

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

Vydáno pod licencí MIT.

Copyright (c) 2021-Present Vitest Team