Skip to content
Vitest 1
Main Navigation PrůvodceAPIKonfiguracePokročilý
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

Pokročilý

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) 2024 Mithril Contributors

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

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors