Skip to content
Vitest 3
Main Navigation Guide & APIConfigurationMode NavigateurAPI avancée
3.2.0
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

Introduction

Pourquoi Vitest

Démarrage

Fonctionnalités

Configuration de Vitest

API

Référence de l'API des Tests

Fonctions Mocks

vi

expect

expectTypeOf

assert

assertType

Guide

Interface en ligne de commande (CLI)

Filtrage des tests

Projets de Test

Rapporteurs

Couverture de code

Instantanés

Simulation

Parallélisme

Tests de type

Interface utilisateur de Vitest

Tests in-source

Contexte de test

Annotations de test

Environnement de Test

Étendre les Matchers

Intégrations IDE

Débogage

Erreurs courantes

Guide de migration

Migration vers Vitest 3.0

Migration depuis Jest

Performance

Analyse des performances des tests

Amélioration des performances

Mode Navigateur

API avancée

Comparaison avec d'autres exécuteurs de tests

Sur cette page

Tests in-source ​

Vitest offre la possibilité d'exécuter des tests directement au sein de votre code source, en parallèle de l'implémentation. Cette approche est similaire aux tests de modules de Rust.

Elle permet aux tests de partager le même contexte que les implémentations et de vérifier des états privés sans nécessiter leur exportation. De plus, elle favorise un cycle de rétroaction plus rapide durant le développement.

WARNING

Ce guide explique comment rédiger des tests directement dans votre code source. Si vous préférez écrire vos tests dans des fichiers séparés, veuillez consulter le guide « Écrire des tests » (Writing Tests).

Configuration ​

Pour commencer, insérez un bloc if (import.meta.vitest) à la fin de votre fichier source et rédigez-y vos tests. Par exemple :

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

// Suites de tests in-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 de Vitest pour inclure les fichiers situés dans src/ :

ts
import { defineConfig } from 'vitest/config';

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

Vous pouvez ensuite lancer les tests !

bash
$ npx vitest

Construction pour la production ​

Pour la construction en production, vous devrez définir des options define dans votre fichier de configuration afin de permettre au bundler d'éliminer le code mort. Par exemple, avec Vite :

ts
/// <reference types="vitest/config" />

import { defineConfig } from 'vite'

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

Autres outils de bundling ​

unbuild
ts
import { defineBuildConfig } from 'unbuild'

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

Pour en savoir plus : unbuild

Rollup
ts
import replace from '@rollup/plugin-replace'

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

Pour en savoir plus : Rollup

TypeScript ​

Pour bénéficier du support TypeScript pour import.meta.vitest, ajoutez vitest/importMeta à votre tsconfig.json :

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

Consultez examples/in-source-test pour un exemple complet.

Notes ​

Cette fonctionnalité peut s'avérer utile pour :

  • Les tests unitaires de fonctions ou d'utilitaires à portée limitée.
  • Le prototypage.
  • Les assertions en ligne.

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

Pager
Page précédenteInterface utilisateur de Vitest
Page suivanteContexte de test

Publié sous la licence MIT.

Copyright (c) 2021-Present Vitest Team

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

Publié sous la licence MIT.

Copyright (c) 2021-Present Vitest Team