Skip to content
Vitest 1
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

Espace de travail

Interface de ligne de commande

Filtrage des tests

Reporters

Couverture

Instantané (Snapshot)

Simulations

Tests de Type

Interface utilisateur de Vitest

Mode Navigateur

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

Améliorer les performances

API

Référence de l'API de Test

Fonctions Mock

Vi

expect

expectTypeOf

assert

assertType

Configuration

Configuration du fichier Vitest

Configuration de Vitest

Sur cette page

Tests intégrés au code source ​

Vitest offre la possibilité d'exécuter des tests directement dans votre code source, à côté de l'implémentation, de manière similaire aux tests de module de Rust.

Cela permet aux tests de partager le même contexte que l'implémentation et de tester des états privés sans avoir à les exporter. De plus, cela accélère le cycle de développement en fournissant un retour d'information plus rapide.

Configuration ​

Pour commencer, insérez un bloc if (import.meta.vitest) à la fin de votre fichier source et écrivez quelques tests à l'intérieur. Par exemple :

ts
// src/index.ts

// l'implémentation
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0);
}

// suites de tests intégrées au code source
if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest;
  it('add', () => {
    expect(add()).toBe(0);
    expect(add(1)).toBe(1);
    expect(add(1, 2, 3)).toBe(6);
  });
}

Mettez à jour la configuration includeSource pour que Vitest inclue les fichiers du répertoire src/ :

ts
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'], 
  },
});

Vous pouvez ensuite lancer les tests !

bash
$ npx vitest

Compilation pour la production ​

Pour la construction de production, vous devrez définir les options define dans votre fichier de configuration, permettant au bundler d'effectuer l'élimination du code mort (dead code elimination). Par exemple, dans Vite :

ts
// vite.config.ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'],
  },
  define: {
    'import.meta.vitest': 'undefined', 
  }, 
});

Autres Bundlers ​

unbuild
ts
// build.config.ts
import { defineBuildConfig } from 'unbuild';

export default defineBuildConfig({
  replace: {
    'import.meta.vitest': 'undefined', 
  }, 
  // other options
});

En savoir plus : unbuild

rollup
ts
// rollup.config.js
import replace from '@rollup/plugin-replace'; 

export default {
  plugins: [
    replace({
      'import.meta.vitest': 'undefined', 
    }), 
  ],
  // other options
};

En savoir plus : Rollup

TypeScript ​

Pour activer la prise en charge de TypeScript pour import.meta.vitest, ajoutez vitest/importMeta à votre tsconfig.json :

json
// tsconfig.json
{
  "compilerOptions": {
    "types": [
      "vitest/importMeta"
    ]
  }
}

Voir test/import-meta pour un exemple complet.

Notes ​

Cette fonctionnalité est particulièrement utile pour :

  • Les tests unitaires de fonctions ou d'utilitaires simples
  • Le prototypage rapide
  • L'insertion d'assertions directement dans le code (Inline Assertion)

Il est recommandé d'utiliser des fichiers de test séparés pour des tests plus complexes, tels que les tests de composants ou les tests E2E.

Pager
Page précédenteMode Navigateur
Page suivanteContexte de Test

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors

https://v1.vitest.dev/guide/in-source

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors