Skip to content
Vitest 0
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

Pracovní prostor

Rozhraní příkazového řádku

Filtrování testů

Pokrytí

Snímky

Mockování

Testování typů

Vitest UI

Režim prohlížeče (experimentální)

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

API

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

Mockování funkcí

Vi

expect

expectTypeOf

assertType

Konfigurace

Konfigurace Vitest

Na této stránce

Testování typů ​

Vitest umožňuje psát testy pro vaše typy pomocí syntaxí expectTypeOf nebo assertType. Ve výchozím nastavení jsou všechny soubory s příponou *.test-d.ts považovány za testy typů, ale toto chování můžete změnit pomocí konfigurační možnosti typecheck.include.

Vitest interně volá tsc nebo vue-tsc, v závislosti na vaší konfiguraci, a analyzuje výsledky. Vitest také zobrazí typové chyby ve vašem zdrojovém kódu, pokud je nalezne. Tuto funkci můžete zakázat pomocí konfigurační možnosti typecheck.ignoreSourceErrors.

Upozorňujeme, že Vitest tyto soubory nespouští ani nekompiluje; jsou pouze staticky analyzovány kompilátorem. Proto nemůžete používat dynamické výrazy, jako jsou dynamické názvy testů, API test.each, API test.runIf, API test.skipIf a API test.concurrent. Můžete však používat jiná API, jako test, describe, .only, .skip a .todo.

Použití přepínačů CLI, jako --allowOnly a -t, je pro kontrolu typů také podporováno.

ts
import { assertType, expectTypeOf } from 'vitest';
import { mount } from './mount.js';

test('my types work properly', () => {
  expectTypeOf(mount).toBeFunction();
  expectTypeOf(mount).parameter(0).toMatchTypeOf<{ name: string }>();

  // @ts-expect-error name is a string
  assertType(mount({ name: 42 }));
});

Jakákoli typová chyba detekovaná v testovacím souboru bude považována za chybu testu. Můžete tedy použít libovolné typové triky k testování typů vašeho projektu.

Seznam dostupných porovnávačů naleznete v sekci API.

Čtení Chyb ​

Při používání API expectTypeOf se můžete setkat s obtížně čitelnými nebo neočekávanými chybami:

ts
expectTypeOf(1).toEqualTypeOf<string>();
//             ^^^^^^^^^^^^^^^^^^^^^^
// index-c3943160.d.ts(90, 20): Arguments for the rest parameter 'MISMATCH' were not provided.

Je to způsobeno způsobem, jakým knihovna expect-type zpracovává typové chyby.

TypeScript bohužel neposkytuje metadata typů bez úprav, takže v současné době nemůžeme poskytnout užitečné chybové zprávy. Nicméně, existují probíhající práce na projektu TypeScript, které by to měly vyřešit. Pokud požadujete lepší chybové zprávy, obraťte se na tým TypeScript a požádejte je o kontrolu zmíněného PR.

Pokud vám práce s API expectTypeOf způsobuje potíže a obtížně se vám zjišťují chyby, můžete vždy použít jednodušší API assertType:

ts
const answer = 42;

assertType<number>(answer);
// @ts-expect-error answer is not a string
assertType<string>(answer);

TIP

Při použití syntaxe @ts-expect-error se ujistěte, že jste neudělali překlep. Můžete to ověřit zahrnutím souborů typů do konfigurační možnosti test.include, aby Vitest tyto testy skutečně spustil a selhal s ReferenceError, pokud se překlep vyskytne.

Tento test projde, protože očekává chybu, ale slovo „answer“ má překlep, takže výsledek je falešně pozitivní:

ts
// @ts-expect-error answer is not a string
assertType<string>(answr); //

Provádění kontroly typů ​

Přidejte tento příkaz do sekce scripts ve vašem souboru package.json:

json
{
  "scripts": {
    "typecheck": "vitest typecheck"
  }
}

Nyní můžete spustit kontrolu typů:

sh
# npm
npm run typecheck

# yarn
yarn typecheck

# pnpm
pnpm run typecheck

Vitest používá tsc --noEmit nebo vue-tsc --noEmit, v závislosti na vaší konfiguraci. Díky tomu můžete tyto skripty odebrat z vašeho CI/CD pipeline.

Pager
Předchozí stránkaMockování
Další stránkaVitest UI

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors

https://v0.vitest.dev/guide/testing-types

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors