Skip to content
Vitest 0
Main Navigation GuíaAPIConfiguraciónAvanzado
1.6.1
0.34.6

Español

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

Español

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

Apariencia

Sidebar Navigation

Guía

Por qué Vitest

Empezando

Características

Espacio de trabajo

Interfaz de Línea de Comandos

Filtrado de Pruebas

Cobertura

Capturas instantáneas

Mocking

Pruebas de Tipos

Interfaz de Usuario de Vitest

Modo Navegador (experimental)

Pruebas en el código fuente

Contexto de prueba

Entorno de Pruebas

Extender Matchers

Integración con IDEs

Depuración

Comparaciones con otros Ejecutores de Pruebas

Guía de Migración

Errores frecuentes

API

Referencia de la API de pruebas

Funciones Mock

Vi

expect

expectTypeOf

assertType

Configuración

Configuración de Vitest

En esta página

Pruebas de Tipos ​

Vitest te permite escribir pruebas para tus tipos utilizando las funciones expectTypeOf o assertType. Por defecto, todos los archivos con extensión *.test-d.ts se consideran pruebas de tipo, pero puedes modificar este comportamiento con la opción de configuración typecheck.include.

Internamente, Vitest ejecuta tsc o vue-tsc, según tu configuración, y analiza los resultados. Vitest también mostrará errores de tipo encontrados en tu código fuente, si los hay. Puedes desactivar esta característica con la opción de configuración typecheck.ignoreSourceErrors.

Es importante tener en cuenta que Vitest no ejecuta ni compila estos archivos; el compilador los analiza estáticamente. Debido a esto, no puedes utilizar código dinámico, como nombres de prueba dinámicos, ni las APIs test.each, test.runIf, test.skipIf y test.concurrent. Sin embargo, puedes usar otras APIs como test, describe, .only, .skip y .todo.

El uso de flags de la CLI, como --allowOnly y -t, también es compatible con la verificación de tipos.

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

Cualquier error de tipo que ocurra dentro de un archivo de prueba se tratará como un fallo en la prueba, por lo que puedes usar cualquier técnica de tipado que necesites para probar los tipos de tu proyecto.

Puedes consultar una lista de los matchers disponibles en la sección de la API.

Interpretación de Errores ​

Si utilizas la API expectTypeOf, es posible que los errores sean difíciles de interpretar o inesperados:

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

Esto se debe a la forma en que expect-type gestiona los errores de tipo.

Desafortunadamente, TypeScript no proporciona metadatos de tipo a menos que se apliquen parches. Por lo tanto, actualmente no podemos ofrecer mensajes de error más informativos. Sin embargo, se está trabajando en un proyecto de TypeScript para solucionar este problema. Si deseas mensajes más claros, te animamos a solicitar al equipo de TypeScript que revise la solicitud mencionada.

Si te resulta complicado trabajar con la API expectTypeOf e interpretar los errores, siempre puedes optar por la API assertType, que es más sencilla:

ts
const answer = 42;

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

TIP

Cuando uses la sintaxis @ts-expect-error, asegúrate de no haber cometido un error de escritura. Puedes verificar esto incluyendo tus archivos de tipo en la opción de configuración test.include, para que Vitest también ejecute estas pruebas y falle con un ReferenceError si la variable no existe.

Esto ocurrirá porque se espera un error, pero la palabra 'answer' tiene un error tipográfico, lo que resulta en un falso positivo:

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

Ejecutar la verificación de tipos (typechecking) ​

Añade este comando a la sección scripts de tu archivo package.json:

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

Ahora puedes ejecutar la verificación de tipos:

sh
# npm
npm run typecheck

# yarn
yarn typecheck

# pnpm
pnpm run typecheck

Vitest utiliza tsc --noEmit o vue-tsc --noEmit, dependiendo de tu configuración, por lo que puedes eliminar estos scripts redundantes de tu pipeline.

Pager
AnteriorMocking
SiguienteInterfaz de Usuario de Vitest

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors

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

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors