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

TestProject 3.0.0+ ​

WARNING

Ez az útmutató a haladó Node.js API-t ismerteti. Ha csak projekteket szeretne definiálni, kövesse a "Teszt Projektek" útmutatót.

name ​

A név egy egyedi karakterlánc, amelyet a felhasználó ad meg, vagy amelyet a Vitest kikövetkeztet. Ha a felhasználó nem adott meg nevet, a Vitest megpróbál betölteni egy package.json fájlt a projekt gyökerében, és onnan veszi a name tulajdonságot. Ha nincs package.json, a Vitest alapértelmezés szerint a mappa nevét használja. Az inline projektek számokat használnak névként (karakterlánccá alakítva).

ts
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test');
vitest.projects.map(p => p.name) === ['@pkg/server', 'utils', '2', 'custom'];
ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    projects: [
      './packages/server', // `package.json` fájlt tartalmaz "@pkg/server" névvel
      './utils', // nincs package.json fájl
      {
        // a név nincs testreszabva
        test: {
          pool: 'threads',
        },
      },
      {
        // egyéni névvel
        test: {
          name: 'custom',
        },
      },
    ],
  },
});

INFO

Ha a gyökérprojekt nem része a felhasználói projekteknek, a name tulajdonsága nem lesz feloldva.

vitest ​

A vitest a globális Vitest folyamatra hivatkozik.

serializedConfig ​

Ez az a konfiguráció, amelyet a tesztfolyamatok kapnak. A Vitest manuálisan szerializálja a konfigurációt azáltal, hogy eltávolítja az összes nem szerializálható függvényt és tulajdonságot. Mivel ez az érték mind a tesztekben, mind a Node.js környezetben elérhető, a típusa a fő belépési pontból van exportálva.

ts
import type { SerializedConfig } from 'vitest';

const config: SerializedConfig = vitest.projects[0].serializedConfig;

WARNING

A serializedConfig tulajdonság egy getter. Minden hozzáféréskor a Vitest újra szerializálja a konfigurációt, ha az megváltozott. Ez azt is jelenti, hogy mindig más referenciát ad vissza:

ts
project.serializedConfig === project.serializedConfig; // ❌

globalConfig ​

A tesztkonfiguráció, amellyel a Vitest inicializálva lett. Ha ez a gyökérprojekt, a globalConfig és a config ugyanarra az objektumra hivatkozik. Ez a konfiguráció olyan értékekhez hasznos, amelyek nem állíthatók be projekt szinten, mint például a coverage vagy a reporters.

ts
import type { ResolvedConfig } from 'vitest/node';

vitest.config === vitest.projects[0].globalConfig;

config ​

Ez a projekt feloldott tesztkonfigurációja.

hash 3.2.0+ ​

A projekt egyedi hash-je. Ez az érték következetes az újrafuttatások során.

A projekt gyökérkönyvtárán és nevén alapul. Vegye figyelembe, hogy a gyökérútvonal nem egységes a különböző operációs rendszerek között, így a hash is eltérő lesz.

vite ​

Ez a projekt ViteDevServer példánya. Minden projektnek saját Vite szervere van.

browser ​

Ez az érték csak akkor kap értéket, ha a tesztek böngészőben futnak. Ha a browser engedélyezve van, de a tesztek még nem futottak le, akkor ez undefined lesz. Ha ellenőrizni szeretné, hogy a projekt támogatja-e a böngésző teszteket, használja a project.isBrowserEnabled() metódust.

WARNING

A böngésző API még kísérleti fázisban van, és nem követi a SemVer szabályait. A böngésző API-t a többi API-tól elkülönítve fogják szabványosítani.

provide ​

ts
function provide<T extends keyof ProvidedContext & string>(
  key: T,
  value: ProvidedContext[T]
): void;

Egy módja annak, hogy egyéni értékeket biztosítsunk a teszteknek a config.provide mezőn kívül. Minden érték érvényesítésre kerül a structuredClone segítségével, mielőtt tárolásra kerülnének, de a providedContext értékei önmagukban nem klónozódnak.

ts
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test');
const project = vitest.projects.find(p => p.name === 'custom');
project.provide('key', 'value');
await vitest.start();
ts
import { inject } from 'vitest';
const value = inject('key');

Az értékek dinamikusan is megadhatók. A tesztekben megadott érték a következő futtatáskor frissül.

TIP

Ez a metódus a globális beállítási fájlok számára is elérhető olyan esetekben, amikor a nyilvános API nem használható:

js
export default function setup({ provide }) {
  provide('wsPort', 3000);
}

getProvidedContext ​

ts
function getProvidedContext(): ProvidedContext;

Ez a kontextus objektumot adja vissza. Minden projekt örökli a vitest.provide által beállított globális kontextust is.

ts
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test');
vitest.provide('global', true);
const project = vitest.projects.find(p => p.name === 'custom');
project.provide('key', 'value');

// { global: true, key: 'value' }
const context = project.getProvidedContext();

TIP

A projektkontextus értékei mindig felülírják a gyökérprojekt kontextusában lévő értékeket.

createSpecification ​

ts
function createSpecification(
  moduleId: string,
  locations?: number[]
): TestSpecification;

Hozzon létre egy teszt specifikációt, amely felhasználható a vitest.runTestSpecifications metódussal. A specifikáció a tesztfájlt egy adott project-re és teszt locations-re (opcionális) határolja be. A teszt helyek azok a kódsorok, ahol a teszt a forráskódban definiálva van. Ha helyek vannak megadva, a Vitest csak azokon a sorokon definiált teszteket futtatja. Vegye figyelembe, hogy ha a testNamePattern definiálva van, akkor az is alkalmazásra kerül.

ts
import { createVitest } from 'vitest/node';
import { resolve } from 'node:path/posix';

const vitest = await createVitest('test');
const project = vitest.projects[0];
const specification = project.createSpecification(
  resolve('./example.test.ts'),
  [20, 40] // opcionális tesztsorok
);
await vitest.runTestSpecifications([specification]);

WARNING

A createSpecification feloldott modul ID-t vár. Nem oldja fel automatikusan a fájlt, és nem ellenőrzi a fájlrendszeren való létezését.

Azt is vegye figyelembe, hogy a project.createSpecification mindig új példányt ad vissza.

isRootProject ​

ts
function isRootProject(): boolean;

Ellenőrzi, hogy az aktuális projekt a gyökérprojekt-e. A gyökérprojektet a vitest.getRootProject() hívásával is lekérdezheti.

globTestFiles ​

ts
function globTestFiles(filters?: string[]): {
  /**
   * A szűrőknek megfelelő tesztfájlok.
   */
  testFiles: string[];
  /**
   * A szűrőknek megfelelő típusellenőrző tesztfájlok. Ez üres lesz, hacsak a `typecheck.enabled` nem `true`.
   */
  typecheckTestFiles: string[];
};

Felkutatja az összes tesztfájlt. Ez a függvény egy objektumot ad vissza, amely reguláris teszteket és típusellenőrző teszteket tartalmaz.

Ez a metódus filters-t fogad el. A szűrők csak a fájlútvonal egy részét képezhetik, ellentétben a Vitest példány más metódusaival:

js
project.globTestFiles(['foo']); // ✅
project.globTestFiles(['basic/foo.js:10']); // ❌

TIP

A Vitest a fast-glob csomagot használja a tesztfájlok megtalálásához. A test.dir, test.root, root vagy process.cwd() határozza meg a cwd opciót.

Ez a metódus több konfigurációs opciót is figyelembe vesz:

  • test.include, test.exclude a reguláris tesztfájlok megtalálásához
  • test.includeSource, test.exclude a forráskódban lévő tesztek megtalálásához
  • test.typecheck.include, test.typecheck.exclude a típusellenőrző tesztek megtalálásához

matchesTestGlob ​

ts
function matchesTestGlob(moduleId: string, source?: () => string): boolean;

Ez a metódus ellenőrzi, hogy a fájl reguláris tesztfájl-e. Ugyanazokat a konfigurációs tulajdonságokat használja, amelyeket a globTestFiles használ az érvényesítéshez.

Ez a metódus egy második paramétert is elfogad, amely a forráskód. Ez arra szolgál, hogy ellenőrizze, hogy a fájl forráskódban lévő teszt-e. Ha ezt a metódust többször hívja meg több projekthez, javasolt a fájlt egyszer elolvasni és közvetlenül átadni. Ha a fájl nem tesztfájl, de illeszkedik az includeSource glob mintához, a Vitest szinkron módon olvassa be a fájlt, hacsak a source nincs megadva.

ts
import { createVitest } from 'vitest/node';
import { resolve } from 'node:path/posix';

const vitest = await createVitest('test');
const project = vitest.projects[0];

project.matchesTestGlob(resolve('./basic.test.ts')); // true
project.matchesTestGlob(resolve('./basic.ts')); // false
project.matchesTestGlob(
  resolve('./basic.ts'),
  () => `
if (import.meta.vitest) {
  // ...
}
`
); // true, ha az `includeSource` be van állítva

import ​

ts
function import<T>(moduleId: string): Promise<T>

Fájl importálása Vite modul futtatóval. A fájlt a Vite a megadott projekt konfigurációjával alakítja át, és külön kontextusban hajtja végre. Vegye figyelembe, hogy a moduleId relatív lesz a config.root-hoz képest.

DANGER

A project.import újrahasznosítja a Vite modulgráfját, így ugyanazon modul reguláris importálással történő importálása eltérő modult eredményez:

ts
import * as staticExample from './example.js';
const dynamicExample = await project.import('./example.js');

dynamicExample !== staticExample; // ✅

INFO

Belsőleg a Vitest ezt a metódust használja a globális beállítások, egyéni lefedettségi szolgáltatók és egyéni jelentéskészítők importálására, ami azt jelenti, hogy mindannyian ugyanazt a modulgráfot használják, amíg ugyanahhoz a Vite szerverhez tartoznak.

onTestsRerun ​

ts
function onTestsRerun(cb: OnTestsRerunHandler): void;

Ez a project.vitest.onTestsRerun rövidített formája. Egy visszahívást fogad el, amelyre akkor várnak, amikor a teszteket újra futtatásra ütemezték (általában fájlváltozás miatt).

ts
project.onTestsRerun(specs => {
  console.log(specs);
});

isBrowserEnabled ​

ts
function isBrowserEnabled(): boolean;

true értéket ad vissza, ha ez a projekt böngészőben futtat teszteket.

close ​

ts
function close(): Promise<void>;

Lezárja a projektet és az összes kapcsolódó erőforrását. Ez csak egyszer hívható meg; a bezárási promise gyorsítótárazva van a szerver újraindításáig. Ha az erőforrásokra ismét szükség van, hozzon létre egy új projektet.

Részletesebben, ez a metódus bezárja a Vite szervert, leállítja a típusellenőrző szolgáltatást, bezárja a böngészőt, ha fut, törli a forráskódot tartalmazó ideiglenes könyvtárat, és visszaállítja a megadott kontextust.

Pager
Előző oldalVitest API
Következő oldalTestSpecification

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/api/test-project

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team