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

Bevezetés

Miért Vitest

Első lépések

Jellemzők

Vitest konfigurálása

API

Teszt API Referencia

Mock Függvények

Vi

expect

expectTypeOf

assert

assertType

Útmutató

Parancssori felület

Teszt szűrés

Tesztprojektek

Jelentéskészítők (Reporters)

Kódlefedettség

Snapshot

Mockolás

Párhuzamos végrehajtás

Típusok Tesztelése

Vitest UI

Forráskódba ágyazott tesztelés

Tesztkörnyezet

Teszt annotációk

Tesztkörnyezet

Matcherek kiterjesztése

IDE Integrációk

Hibakeresés

Gyakori hibák

Migrációs útmutató

Migrálás a Vitest 3.0-ra

Migrálás Jesstről

Teljesítmény

Teszt teljesítmény profilozása

Teljesítmény javítása

Böngésző üzemmód

Haladó API

Összehasonlítás más tesztfuttatókkal

Ezen az oldalon

Matcherek kiterjesztése ​

Mivel a Vitest kompatibilis mind a Chai-jal, mind a Jest-tel, használhatja a chai.use API-t vagy az expect.extend metódust, attól függően, hogy melyiket részesíti előnyben.

Ez az útmutató a matcherek expect.extend metódussal történő kiterjesztését tárgyalja. Ha a Chai API-ja érdekli, tekintse meg az ő útmutatójukat.

Az alapértelmezett matcherek kiterjesztéséhez hívja meg az expect.extend metódust egy objektummal, amely a matchereket tartalmazza.

ts
expect.extend({
  toBeFoo(received, expected) {
    const { isNot } = this;
    return {
      // ne módosítsa a "pass" értékét az isNot alapján. A Vitest ezt megteszi Ön helyett
      pass: received === 'foo',
      message: () => `${received} is${isNot ? ' not' : ''} foo`,
    };
  },
});

Ha TypeScriptet használ, kiterjesztheti az alapértelmezett Assertion interfészt egy környezeti deklarációs fájlban (pl. vitest.d.ts) az alábbi kódrészlettel:

ts
import 'vitest';

interface CustomMatchers<R = unknown> {
  toBeFoo: () => R;
}

declare module 'vitest' {
  interface Matchers<T = any> extends CustomMatchers<T> {}
}
ts
import 'vitest';

interface CustomMatchers<R = unknown> {
  toBeFoo: () => R;
}

declare module 'vitest' {
  interface Assertion<T = any> extends CustomMatchers<T> {}
  interface AsymmetricMatchersContaining extends CustomMatchers {}
}

TIP

Vitest 3.2 óta kiterjesztheti a Matchers interfészt, hogy típusbiztos állításokat használhasson az expect.extend, expect().* és expect.* metódusokban egyszerre. Korábban külön interfészeket kellett definiálni mindegyikhez.

WARNING

Ne felejtse el belefoglalni a környezeti deklarációs fájlt a tsconfig.json-ba.

A matcher visszatérési értékének kompatibilisnek kell lennie a következő interfésszel:

ts
interface ExpectationResult {
  pass: boolean;
  message: () => string;
  // Ha ezeket átadja, automatikusan megjelennek egy diff nézetben, amikor
  // a matcher nem felel meg, így nem kell Önnek külön megjelenítenie a különbséget
  actual?: unknown;
  expected?: unknown;
}

WARNING

Ha aszinkron matchert hoz létre, ne felejtse el az await kulcsszót használni az eredmény megvárásához (await expect('foo').toBeFoo()) magában a tesztben:

ts
expect.extend({
  async toBeAsyncAssertion() {
    // ...
  },
});

await expect().toBeAsyncAssertion();

A matcher függvény első argumentuma a kapott érték (az, ami az expect(received)-ben szerepel). A többi argumentum közvetlenül a matchernek átadott argumentum.

A matcher függvény hozzáfér a this kontextushoz a következő tulajdonságokkal:

isNot ​

Igaz értéket ad vissza, ha a matchert a not módosítóval hívták meg (expect(received).not.toBeFoo()).

promise ​

Ha a matchert resolved vagy rejected módosítóval hívták meg, ez az érték tartalmazza a módosító nevét. Ellenkező esetben üres karakterláncot ad vissza.

equals ​

Ez egy segédfüggvény, amely lehetővé teszi két érték összehasonlítását. true értéket ad vissza, ha az értékek egyenlőek, egyébként false értéket. Ezt a függvényt belsőleg szinte minden matcher használja. Alapértelmezés szerint támogatja az aszimmetrikus matchereket tartalmazó objektumokat.

utils ​

Ez számos segédfüggvényt tartalmaz, amelyeket üzenetek megjelenítésére használhat.

A this kontextus tartalmazza az aktuális tesztről szóló információkat is. Ezt az expect.getState() hívásával is lekérheti. A leghasznosabb tulajdonságok a következők:

currentTestName ​

Az aktuális teszt teljes neve (beleértve a describe blokkot is).

testPath ​

Az aktuális tesztfájl elérési útja.

Pager
Előző oldalTesztkörnyezet
Következő oldalIDE Integrációk

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/extending-matchers

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team