Skip to content
Vitest 2
Main Navigation LeitfadenAPIKonfigurationBrowser-ModusFortgeschritten
2.1.9
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

Warum Vitest

Erste Schritte

Features

Arbeitsbereich

Kommandozeilenschnittstelle

Testfilter

Reporter

Codeabdeckung (Coverage)

Snapshot

Mocking

Typen testen

Vitest UI

In-Source-Testing

Testkontext

Testumgebung

Erweiterung von Matchern

IDE-Integration

Debugging

Vergleiche mit anderen Test-Runnern

Migrationsleitfaden

Häufige Fehler

Profiling Test Performance

Leistungsverbesserung

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.

WARNING

Dieser Leitfaden erklärt, wie Sie Tests in Ihrem Quellcode schreiben. Wenn Sie Tests in separaten Testdateien schreiben müssen, folgen Sie dem Leitfaden "Tests schreiben".

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

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

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 examples/in-source-test.

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 SeiteVitest UI
Nächste SeiteTestkontext

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2024 Mithril Contributors

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

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2024 Mithril Contributors