Skip to content
Vitest 2
Main Navigation GuideAPIConfigurationMode NavigateurAvancé
2.1.9
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

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

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

Profiling Test Performance

Améliorer les performances

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.

WARNING

Ce guide explique comment écrire des tests à l'intérieur de votre code source. Si vous devez écrire des tests dans des fichiers de test séparés, suivez le guide "Écrire des tests".

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
// vitest.config.ts
import { defineConfig } from 'vitest/config';

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
// vitest.config.ts
import { defineConfig } from 'vitest/config';

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 examples/in-source-test 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édenteInterface utilisateur de Vitest
Page suivanteContexte de Test

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors

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

Publié sous la licence MIT.

Copyright (c) 2024 Mithril Contributors