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

Průvodce

Proč Vitest

Začínáme

Funkce

Workspace

Rozhraní příkazového řádku

Filtrování testů

Reportéři

Pokrytí

Snímky

Mockování

Testování typů

Vitest UI

Režim prohlížeče

Testování ve zdrojovém kódu

Kontext testu

Testovací prostředí

Rozšíření matcherů/porovnávačů

Integrace do IDE

Ladění

Srovnání s jinými testovacími nástroji

Průvodce migrací

Běžné chyby

Zvýšení výkonu

API

Referenční příručka k Test API

Mock funkce

Vi

expect

expectTypeOf

assert

assertType

Konfigurace

Správa konfiguračního souboru pro Vitest

Konfigurace Vitest

Na této stránce

Rozšíření matcherů/porovnávačů ​

Protože je Vitest kompatibilní s Chai i Jest, můžete použít buď API chai.use, nebo expect.extend, podle toho, co vám více vyhovuje.

Tento návod se zaměří na rozšíření porovnávačů pomocí expect.extend. Pokud vás zajímá API Chai, podívejte se na jejich dokumentaci.

Pro rozšíření výchozích porovnávačů zavolejte expect.extend s objektem obsahujícím vaše vlastní porovnávače.

ts
expect.extend({
  toBeFoo(received, expected) {
    const { isNot } = this;
    return {
      // Neměňte "pass" na základě isNot. Vitest to udělá za vás.
      pass: received === 'foo',
      message: () => `${received} is${isNot ? ' not' : ''} foo`,
    };
  },
});

Pokud používáte TypeScript, můžete od verze Vitest 0.31.0 rozšířit výchozí rozhraní Assertion v deklaračním souboru (např.: vitest.d.ts) pomocí následujícího kódu:

ts
import type { Assertion, AsymmetricMatchersContaining } from 'vitest';

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

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

WARNING

Nezapomeňte zahrnout deklarační soubor do svého tsconfig.json.

Návratová hodnota porovnávače by měla být kompatibilní s následujícím rozhraním:

ts
interface MatcherResult {
  pass: boolean;
  message: () => string;
  // Pokud je zadáte, automaticky se zobrazí v diffu, když
  // porovnávač neprojde, takže nemusíte diff vypisovat sami.
  actual?: unknown;
  expected?: unknown;
}

WARNING

Pokud vytváříte asynchronní porovnávač, nezapomeňte použít await pro výsledek (await expect('foo').toBeFoo()) v samotném testu.

První argument uvnitř funkce porovnávače je přijatá hodnota (ta v expect(received)). Zbytek jsou argumenty předané přímo do porovnávače.

Matcher funkce má přístup ke kontextu this s následujícími vlastnostmi:

  • isNot

    Vrací true, pokud byl porovnávač volán s modifikátorem not (expect(received).not.toBeFoo()).

  • promise

    Pokud byl porovnávač volán s modifikátorem resolved nebo rejected, tato hodnota bude obsahovat název modifikátoru. Jinak to bude prázdný řetězec.

  • equals

    Jedná se o pomocnou funkci, která umožňuje porovnání dvou hodnot. Vrátí true, pokud jsou hodnoty shodné, jinak false. Tato funkce se interně používá pro téměř každý porovnávač. Ve výchozím nastavení podporuje objekty s asymetrickými porovnávači.

  • utils

    Obsahuje sadu pomocných funkcí, které můžete použít pro formátování zpráv.

Kontext this také obsahuje informace o aktuálním testu. Tyto informace můžete také získat voláním expect.getState(). Nejužitečnější vlastnosti jsou:

  • currentTestName

    Úplný název aktuálního testu (včetně názvů bloků describe).

  • testPath

    Cesta k souboru s aktuálním testem.

Pager
Předchozí stránkaTestovací prostředí
Další stránkaIntegrace do IDE

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors

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

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors