Skip to content
Vitest 0
Main Navigation ÚtmutatóAPIKonfigurációHaladó
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

Útmutató

Miért a Vitest?

Első lépések

Funkciók

Munkaterület

Parancssori felület

Tesztszűrés

Lefedettség

Pillanatképek

Mockolás

Típusok tesztelése

Vitest UI

Böngésző mód (kísérleti)

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

API

Teszt API Dokumentáció

Mock függvények

Vi

expect

expectTypeOf

assertType

Konfiguráció

Vitest konfigurálása

Ezen az oldalon

Típusok tesztelése ​

A Vitest lehetővé teszi, hogy teszteket írj a típusaidhoz az expectTypeOf vagy az assertType szintaxis használatával. Alapértelmezés szerint a *.test-d.ts fájlokban lévő összes teszt típus tesztnek minősül, de ezt megváltoztathatod a typecheck.include konfigurációs opcióval.

A háttérben a Vitest a tsc-t vagy a vue-tsc-t hívja meg, a konfigurációdtól függően, és elemzi az eredményeket. A Vitest a forráskódban található típushibákat is kiírja, ha talál ilyet. Ezt letilthatod a typecheck.ignoreSourceErrors konfigurációs opcióval.

Fontos megjegyezni, hogy a Vitest nem futtatja és nem is fordítja le ezeket a fájlokat, csak statikusan elemzi őket a fordító. Emiatt nem használhatsz dinamikus utasításokat, például dinamikus tesztneveket, illetve a test.each, test.runIf, test.skipIf, test.concurrent API-kat. Viszont használhatsz más API-kat, mint például a test, describe, .only, .skip és .todo.

A CLI kapcsolók, mint például a --allowOnly és a -t, szintén támogatottak a típusellenőrzéshez.

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 }));
});

Bármely típushiba, amely egy tesztfájlon belül fordul elő, teszthibaként lesz kezelve, így bármilyen típus trükköt használhatsz a projekted típusainak tesztelésére.

A lehetséges összehasonlítók listáját az API szekcióban találod.

Hibák olvasása ​

Ha az expectTypeOf API-t használod, nehezen olvasható vagy váratlan hibákba ütközhetsz:

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

Ez azért van, mert az expect-type könyvtár így kezeli a típushibákat.

Sajnos a TypeScript nem biztosít típusmetaadatokat javítás nélkül, ezért jelenleg nem tudunk hasznos hibaüzeneteket adni. Azonban a TypeScript projektben dolgoznak ennek javításán. Ha részletesebb hibaüzenetekre van szükséged, kérjük, vedd fel a kapcsolatot a TypeScript csapattal, hogy vessenek egy pillantást a említett PR-re.

Ha nehéznek találod az expectTypeOf API-val való munkát és a hibák értelmezését, mindig használhatod az egyszerűbb assertType API-t:

ts
const answer = 42;

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

TIP

Amikor a @ts-expect-error szintaxist használod, érdemes megbizonyosodni arról, hogy nem írtál el valamit. Ezt úgy teheted meg, hogy a típusfájljaidat beleveszed a test.include konfigurációs opcióba, így a Vitest ténylegesen futtatja ezeket a teszteket, és ReferenceError-t fog eredményezni.

Ez sikeres lesz, mert hibát vár, de a "answer" szó el van gépelve, így ez egy téves pozitív hiba:

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

Típusellenőrzés futtatása ​

Add hozzá ezt a parancsot a package.json fájl scripts szekciójához:

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

Most futtathatod a típusellenőrzést:

sh
# npm
npm run typecheck

# yarn
yarn typecheck

# pnpm
pnpm run typecheck

A Vitest a tsc --noEmit vagy a vue-tsc --noEmit parancsot használja, a konfigurációdtól függően, így eltávolíthatod ezeket a scripteket a pipeline-ból.

Pager
Előző oldalMockolás
Következő oldalVitest UI

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors

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

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors