Skip to content
Vitest 1
Main Navigation LeitfadenAPIKonfigurationFortgeschritten
1.6.1
0.34.6

Deutsch

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

Deutsch

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

Aussehen

Sidebar Navigation

Leitfaden

Warum Vitest

Erste Schritte

Features

Arbeitsbereich

Kommandozeilenschnittstelle

Testfilter

Reporter

Codeabdeckung (Coverage)

Snapshot

Mocking

Typen testen

Vitest UI

Browser-Modus

In-Source-Testing

Testkontext

Testumgebung

Erweiterung von Matchern

IDE-Integration

Debugging

Vergleiche mit anderen Test-Runnern

Migrationsleitfaden

Häufige Fehler

Leistungsverbesserung

API

Test API Referenz

Mock-Funktionen

Vi

expect

expectTypeOf

assert

assertType

Konfiguration

Verwaltung der Vitest-Konfigurationsdatei

Vitest konfigurieren

Auf dieser Seite

In-Source-Testing ​

Vitest bietet die Möglichkeit, Tests direkt im Quellcode neben der Implementierung auszuführen, ähnlich den Modultests in Rust.

Dadurch können Tests denselben Closure wie die Implementierung nutzen und private Zustände testen, ohne diese explizit exportieren zu müssen. Dies ermöglicht einen schnelleren Feedback-Zyklus während der Entwicklung.

Einrichtung ​

Um zu beginnen, fügen Sie am Ende Ihrer Quelldatei einen if (import.meta.vitest)-Block hinzu und schreiben Sie darin Ihre Tests. Zum Beispiel:

ts
// src/index.ts

// Die Implementierung
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0);
}

// In-Source-Testsuite
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);
  });
}

Aktualisieren Sie die includeSource-Konfiguration in Vitest, um die Dateien im Verzeichnis src/ einzubeziehen:

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

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

Anschließend können Sie die Tests ausführen!

bash
$ npx vitest

Produktions-Build ​

Für den Produktions-Build müssen Sie die define-Optionen in Ihrer Konfigurationsdatei setzen, damit der Bundler Dead-Code-Eliminierung durchführen kann. Hier ein Beispiel für 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', 
  }, 
});

Andere Bundler ​

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

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

Weitere Informationen: unbuild

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

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

Weitere Informationen: Rollup

TypeScript ​

Um TypeScript-Unterstützung für import.meta.vitest zu erhalten, fügen Sie vitest/importMeta zu Ihrer tsconfig.json hinzu:

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

Ein vollständiges Beispiel finden Sie unter test/import-meta.

Hinweise ​

Diese Funktion kann nützlich sein für:

  • Unit-Tests für kleine Funktionen oder Hilfsfunktionen
  • Prototyping
  • Inline-Assertions

Für komplexere Tests, wie z. B. Komponenten- oder E2E-Tests, wird empfohlen, stattdessen separate Testdateien zu verwenden.

Pager
Vorherige SeiteBrowser-Modus
Nächste SeiteTestkontext

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2024 Mithril Contributors

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

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2024 Mithril Contributors