Skip to content
Vitest 0
Main Navigation GuidaAPIConfigurazioneAvanzato
1.6.1
0.34.6

Italiano

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

Italiano

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

Aspetto

Sidebar Navigation

Guida

Perché Vitest

Introduzione

Funzionalità

Spazio di lavoro

Interfaccia a riga di comando

Filtro dei test

Coverage

Snapshot

Mocking

Test dei tipi

Interfaccia Utente di Vitest

Modalità Browser (sperimentale)

Test nel codice sorgente

Contesto del Test

Ambienti di Test

Estensione dei Matchers

Integrazione con gli IDE

Debugging

Confronti con altri Test Runner

Guida alla migrazione

Errori Frequenti

API

Riferimento API Test

Funzioni Mock

Vi

expect

expectTypeOf

assertType

Configurazione

Configurazione di Vitest

In questa pagina

Test dei tipi ​

Vitest ti permette di scrivere test per i tuoi tipi, usando le sintassi expectTypeOf o assertType. Per impostazione predefinita, tutti i test all'interno dei file *.test-d.ts sono considerati test dei tipi, ma puoi modificarlo tramite l'opzione di configurazione typecheck.include.

Internamente, Vitest, a seconda della configurazione, invoca tsc o vue-tsc e ne analizza i risultati. Vitest segnalerà anche gli errori di tipo nel tuo codice sorgente, se presenti. Puoi disabilitare questa funzionalità con l'opzione di configurazione typecheck.ignoreSourceErrors.

È importante notare che Vitest non esegue o compila questi file; vengono solo analizzati staticamente dal compilatore. Pertanto, non è possibile utilizzare istruzioni dinamiche. Nello specifico, non sono supportati nomi di test dinamici, né le API test.each, test.runIf, test.skipIf e test.concurrent. Puoi comunque utilizzare altre API, come test, describe, .only, .skip e .todo.

È supportato anche l'utilizzo dei flag CLI, come --allowOnly e -t, per il controllo dei tipi.

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

Qualsiasi errore di tipo generato all'interno di un file di test verrà trattato come un errore di test. Di conseguenza, puoi utilizzare qualsiasi tecnica di tipizzazione per testare i tipi del tuo progetto.

Puoi consultare un elenco dei possibili matcher nella sezione API.

Interpretazione degli errori ​

Se utilizzi l'API expectTypeOf, potresti riscontrare errori di difficile interpretazione o inattesi:

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

Questo comportamento è dovuto al modo in cui expect-type gestisce gli errori di tipo.

Purtroppo, TypeScript non fornisce metadati di tipo senza modifiche, quindi non possiamo fornire messaggi di errore significativi al momento. Tuttavia, sono in corso attività nel progetto TypeScript per risolvere questo problema. Se desideri messaggi più chiari, ti invitiamo a sollecitare il team di TypeScript a valutare la PR menzionata.

Se hai difficoltà a utilizzare l'API expectTypeOf e a interpretare gli errori, puoi sempre utilizzare l'API assertType, che è più semplice:

ts
const answer = 42;

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

TIP

Quando si utilizza la sintassi @ts-expect-error, è consigliabile assicurarsi di non aver commesso errori di battitura. Puoi farlo includendo i tuoi file di tipo nell'opzione di configurazione test.include, in modo che Vitest esegua questi test e fallisca con ReferenceError.

Questo esempio avrà successo, poiché è previsto un errore, ma la parola "answer" contiene un errore di battitura, quindi si tratta di un falso positivo:

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

Esecuzione del controllo dei tipi ​

Aggiungi questo comando alla sezione scripts del tuo package.json:

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

Ora puoi eseguire il controllo dei tipi:

sh
# npm
npm run typecheck

# yarn
yarn typecheck

# pnpm
pnpm run typecheck

Vitest utilizza tsc --noEmit o vue-tsc --noEmit, a seconda della tua configurazione. Di conseguenza, puoi rimuovere questi script dal tuo processo di build.

Pager
Pagina precedenteMocking
Pagina successivaInterfaccia Utente di Vitest

Rilasciato sotto la licenza MIT.

Copyright (c) 2024 Mithril Contributors

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

Rilasciato sotto la licenza MIT.

Copyright (c) 2024 Mithril Contributors