Skip to content
Vitest 2
Main Navigation ÚtmutatóAPIKonfigurációBöngésző módHaladó
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

Miért a Vitest?

Első lépések

Funkciók

Munkaterület

Parancssori felület

Tesztszűrés

Reporterek

Lefedettség

Pillanatképek

Mockolás

Típusok tesztelése

Vitest UI

Forráskódba épített tesztelés

Tesztkörnyezet

Tesztkörnyezet

Egyezésvizsgálók kiterjesztése

IDE integrációk

Hibakeresés

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

Migrálási útmutató

Gyakori hibák

Profiling Test Performance

A teljesítmény javítása

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 preferálja.

Ez az útmutató a matcherek expect.extend metódussal történő kiterjesztését mutatja be. 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 olyan objektummal, amely tartalmazza az illesztőket.

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 automatikusan kezeli.
      pass: received === 'foo',
      message: () => `${received} is${isNot ? ' not' : ''} foo`,
    };
  },
});

Ha TypeScriptet használ, kiterjesztheti az alapértelmezett Assertion interfészt egy környezetdeklarációs fájlban (például vitest.d.ts). Az alábbi kódot használja:

ts
import 'vitest';

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

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

WARNING

Ne felejtse el hozzáadni a környezetdeklarációs fájlt a tsconfig.json fájlhoz.

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

ts
interface ExpectationResult {
  pass: boolean;
  message: () => string;
  // Ha ezeket átadja, automatikusan megjelennek egy diffben, amikor
  // a matcher nem teljesül, így nem kell manuálisan megjelenítenie a diffet
  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.

A matcher függvény első argumentuma a kapott érték (az expect(received)-ben szereplő érték). A többi argumentum közvetlenül a matchernek kerül átadásra.

A matcher függvény a this kontextuson keresztül a következő tulajdonságokkal rendelkezik:

  • isNot

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

  • promise

    Ha a matchert a 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 stringet ad vissza.

  • equals

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

  • utils

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

A this kontextus az aktuális tesztre vonatkozó információkat is tartalmazza. Ezeket az expect.getState() meghívásával is lekérdezheti. 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) 2024 Mithril Contributors

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

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors