Skip to content
Vitest 0
Main Navigation PrzewodnikAPIKonfiguracjaZaawansowany
1.6.1
0.34.6

Polski

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Türkçe
čeština
magyar

Polski

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Türkçe
čeština
magyar

Wygląd

Sidebar Navigation

Przewodnik

Dlaczego Vitest

Wprowadzenie

Funkcje

Obszar roboczy

Interfejs Linii Poleceń

Filtrowanie Testów

Pokrycie kodu

Snapshot

Mockowanie

Testowanie Typów

Interfejs użytkownika Vitest

Tryb przeglądarki (eksperymentalny)

Testowanie w kodzie źródłowym

Kontekst Testowy

Środowisko Testowe

Rozszerzanie Matcherów

Integracje z IDE

Debugowanie

Porównania z innymi narzędziami do uruchamiania testów

Przewodnik migracji

Częste błędy

API

Dokumentacja API Testów

Funkcje Mockujące

Vi

expect

expectTypeOf

assertType

Konfiguracja

Konfiguracja Vitest

Na tej stronie

Testowanie Typów ​

Vitest umożliwia pisanie testów typów za pomocą składni expectTypeOf lub assertType. Domyślnie, wszystkie pliki z rozszerzeniem *.test-d.ts są traktowane jako pliki testów typów, ale możesz to zmienić za pomocą opcji konfiguracyjnej typecheck.include.

Vitest w rzeczywistości wywołuje tsc lub vue-tsc (w zależności od konfiguracji) i analizuje wyniki. Wykryte błędy typów w kodzie źródłowym również zostaną wyświetlone przez Vitest. Możesz wyłączyć to zachowanie za pomocą opcji konfiguracyjnej typecheck.ignoreSourceErrors.

Pamiętaj, że Vitest nie uruchamia ani nie kompiluje tych plików – są one jedynie analizowane statycznie przez kompilator. Z tego powodu nie można używać dynamicznych nazw testów ani API test.each, test.runIf, test.skipIf, test.concurrent. Możesz jednak korzystać z innych API, takich jak test, describe, .only, .skip i .todo.

Flagi CLI, takie jak --allowOnly i -t, są również obsługiwane podczas sprawdzania typów.

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

test('moje typy działają poprawnie', () => {
  expectTypeOf(mount).toBeFunction();
  expectTypeOf(mount).parameter(0).toMatchTypeOf<{ name: string }>();

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

Każdy błąd typu występujący w pliku testowym będzie traktowany jako błąd testu, co pozwala na wykorzystanie zaawansowanych technik typowania do testowania typów w projekcie.

Listę dostępnych matcherów znajdziesz w sekcji API.

Interpretacja Błędów ​

Używając API expectTypeOf, możesz napotkać trudne do odczytania lub nieoczekiwane komunikaty o błędach:

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

Jest to związane ze sposobem, w jaki biblioteka expect-type obsługuje błędy typów.

Niestety, TypeScript nie udostępnia metadanych typów bez modyfikacji kompilatora, co uniemożliwia dostarczanie bardziej użytecznych komunikatów o błędach na tym etapie. Trwają jednak prace w projekcie TypeScript, mające na celu poprawę tej sytuacji. Jeśli zależy Ci na lepszych komunikatach, zachęcamy do wsparcia tego PR w zespole TypeScript.

Jeśli praca z API expectTypeOf i interpretacja błędów sprawiają trudności, zawsze możesz użyć prostszego API assertType:

ts
const answer = 42;

assertType<number>(answer);
// @ts-expect-error answer nie jest typu string
assertType<string>(answer);

TIP

Używając składni @ts-expect-error, warto upewnić się, że nie popełniłeś literówki. Możesz to zrobić, dodając pliki typów do opcji konfiguracyjnej test.include, co spowoduje, że Vitest uruchomi te testy i zakończy się niepowodzeniem z powodu ReferenceError.

Test przejdzie, ponieważ oczekiwano błędu, ale słowo "answer" zawiera literówkę, co prowadzi do fałszywie pozytywnego wyniku:

ts
// @ts-expect-error answer nie jest typu string
assertType<string>(answr); //

Uruchamianie Sprawdzania Typów ​

Dodaj następujące polecenie do sekcji scripts w pliku package.json:

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

Teraz możesz uruchomić sprawdzanie typów:

sh
# npm
npm run typecheck

# yarn
yarn typecheck

# pnpm
pnpm run typecheck

Vitest używa tsc --noEmit lub vue-tsc --noEmit (w zależności od konfiguracji), więc możesz usunąć te skrypty z potoku CI/CD.

Pager
Poprzednia stronaMockowanie
Następna stronaInterfejs użytkownika Vitest

Opublikowano na licencji MIT.

Copyright (c) 2024 Mithril Contributors

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

Opublikowano na licencji MIT.

Copyright (c) 2024 Mithril Contributors