Skip to content
Vitest 0
Main Navigation GuideAPIConfigurationAvancé
1.6.1
0.34.6

Français

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

Français

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

Apparence

Sidebar Navigation

Guide

Pourquoi Vitest

Premiers pas

Fonctionnalités

Workspace

Interface de ligne de commande

Filtrage des tests

Couverture

Instantané (Snapshot)

Simulations

Tests de Typage

Interface utilisateur de Vitest

Mode Navigateur (expérimental)

Tests intégrés au code source

Contexte de Test

Environnement de test

Extension des vérificateurs (Matchers)

Intégrations pour IDE

Débogage

Comparaison avec d'autres outils de test

Guide de migration

Erreurs courantes

API

Référence de l'API de Test

Fonctions Mock

Vi

expect

expectTypeOf

assertType

Configuration

Configuration de Vitest

Sur cette page

Tests de Typage ​

Vitest vous permet d'écrire des tests pour vos types en utilisant les syntaxes expectTypeOf et assertType. Par défaut, tous les fichiers *.test-d.ts sont considérés comme des tests de type, mais vous pouvez modifier ce comportement avec l'option de configuration typecheck.include.

En arrière-plan, Vitest appelle tsc ou vue-tsc, selon votre configuration, et analyse les résultats. Vitest affiche également les erreurs de type dans votre code source, le cas échéant. Vous pouvez désactiver cet affichage avec l'option de configuration typecheck.ignoreSourceErrors.

Notez que Vitest n'exécute ni ne compile ces fichiers. Ils sont uniquement analysés statiquement par le compilateur. Par conséquent, vous ne pouvez pas utiliser d'instructions dynamiques dans ces tests. Cela signifie que les noms de test dynamiques, les APIs test.each, test.runIf, test.skipIf et test.concurrent ne sont pas supportés. Vous pouvez cependant utiliser d'autres APIs, comme test, describe, .only, .skip et .todo.

L'utilisation des flags CLI, comme --allowOnly et -t, est également prise en charge pour la vérification de type.

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

Toute erreur de type détectée dans un fichier de test sera traitée comme un échec de test. Vous pouvez donc utiliser toutes les techniques de typage pour tester les types de votre projet.

Vous pouvez consulter la liste des matchers disponibles dans la section API.

Interprétation des Erreurs ​

Si vous utilisez l'API expectTypeOf, vous pourriez rencontrer des erreurs difficiles à interpréter ou inattendues :

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

Cela est dû à la manière dont expect-type gère les erreurs de type.

Malheureusement, TypeScript ne fournit pas de métadonnées de type sans patch. Il n'est donc pas possible de fournir des messages d'erreur plus clairs pour le moment. Cependant, des travaux sont en cours dans le projet TypeScript pour améliorer cela. Si vous souhaitez des messages plus précis, n'hésitez pas à encourager l'équipe TypeScript à examiner cette PR.

Si vous trouvez l'API expectTypeOf difficile à utiliser et à interpréter, vous pouvez toujours opter pour l'API assertType, qui est plus simple :

ts
const answer = 42;

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

TIP

Lorsque vous utilisez la syntaxe @ts-expect-error, il est conseillé de vérifier que vous n'avez pas fait de faute de frappe. Vous pouvez le faire en incluant vos fichiers de type dans l'option de configuration test.include, afin que Vitest exécute également ces tests et signale une erreur ReferenceError.

Le test passera, car il est censé produire une erreur, mais le mot "answer" contient une faute de frappe, ce qui génère un faux positif :

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

Exécuter la vérification de type ​

Ajoutez cette commande à la section scripts de votre fichier package.json :

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

Vous pouvez maintenant exécuter la vérification de type :

sh
# npm
npm run typecheck

# yarn
yarn typecheck

# pnpm
pnpm run typecheck

Vitest utilise tsc --noEmit ou vue-tsc --noEmit, selon votre configuration. Vous pouvez donc supprimer ces scripts de votre chaîne de production.

Pager
Page précédenteSimulations
Page suivanteInterface utilisateur de Vitest

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors

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

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors