Heim >Web-Frontend >js-Tutorial >Unit-Tests mit Vitest: Ein Test-Framework der nächsten Generation
Vitest wurde unter Berücksichtigung moderner Entwicklungen entwickelt. Darum sticht es heraus:
Vitest nutzt Vite als Grundlage und nutzt seinen blitzschnellen Hot Module Replacement (HMR) und esbuild für die Bündelung und Transpilation. Dies ergibt:
Bei Leistungsbenchmarks übertrifft Vitest Jest durchweg deutlich, da es die optimierte Build-Pipeline von Vite nutzt.
Framework | Time to run 500 tests |
---|---|
Jest | ~8 seconds |
Vitest | ~3 seconds |
Mocha | ~6 seconds |
Hinweis:Diese Benchmarks können je nach Projektkomplexität und Systemspezifikationen variieren.
Vitest ist Jest-kompatibel, was bedeutet, dass Sie einen Großteil Ihrer vorhandenen Testsuite mit minimalen Änderungen wiederverwenden können. Es unterstützt auch beliebte Tools wie TypeScript, JSX und ESM sofort einsatzbereit.
---
Lassen Sie uns in die Einrichtung von Vitest in einem TypeScript-Projekt eintauchen. Wir demonstrieren dies anhand eines React-Projekts, aber die Schritte sind für Vue 3- oder Node.js-Projekte ähnlich.
npm install --save-dev vitest
Für Projekte, die React verwenden, benötigen Sie außerdem die React-Testbibliothek:
npm install --save-dev @testing-library/react @testing-library/jest-dom
Erstellen oder aktualisieren Sie Ihre vite.config.ts, um Vitest zu aktivieren:
import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [react()], test: { globals: true, environment: 'jsdom', // Use 'node' for Node.js projects setupFiles: './test/setup.ts', }, });
Setup-Dateien werden zum Konfigurieren der Testumgebung verwendet. Erstellen Sie eine test/setup.ts-Datei:
import '@testing-library/jest-dom';
Aktualisieren Sie Ihre package.json, um ein Testskript aufzunehmen:
{ "scripts": { "test": "vitest" } }
---
Vitest bietet eine Jest-ähnliche API, die das Schreiben von Tests unkompliziert macht. Hier ist ein einfaches Beispiel:
Stellen Sie sich vor, Sie haben eine React-Komponente:
// src/components/Greeting.tsx import React from 'react'; type GreetingProps = { name: string; }; export const Greeting: React.FC<GreetingProps> = ({ name }) => { return <h1>Hello, {name}!</h1>; };
Erstellen Sie eine Testdatei für die Komponente:
// src/components/__tests__/Greeting.test.tsx import { render, screen } from '@testing-library/react'; import { describe, it, expect } from 'vitest'; import { Greeting } from '../Greeting'; describe('Greeting Component', () => { it('renders the correct greeting', () => { render(<Greeting name="Vitest" />); expect(screen.getByText('Hello, Vitest!')).toBeInTheDocument(); }); });
Führen Sie die Tests aus mit:
npm-Lauftest
Sie sehen eine Ausgabe ähnlich dieser:
✓ Die Begrüßungskomponente gibt die richtige Begrüßung wieder.
---
Vitest unterstützt direkt Mocking-Module und -Funktionen:
import { vi } from 'vitest'; const mockFn = vi.fn(); mockFn(); expect(mockFn).toHaveBeenCalled();
Snapshot-Testen ist so einfach wie:
import { render } from '@testing-library/react'; import { expect } from 'vitest'; import { Greeting } from '../Greeting'; test('matches snapshot', () => { const { container } = render(<Greeting name="Vitest" />); expect(container).toMatchSnapshot(); });
Verwenden Sie die CLI-Optionen von Vitest, um die Leistung zu messen:
vitest --run --coverage
---
Vitest ist eine überzeugende Wahl für moderne Tests und bietet Geschwindigkeit, Einfachheit und umfangreiche Funktionen von Vite. Egal, ob Sie von Jest migrieren oder neu beginnen, Vitest bietet ein hervorragendes Entwicklererlebnis und stellt sicher, dass Ihre Tests genauso schnell laufen wie Ihr Code.
Probieren Sie Vitest bei Ihrem nächsten Projekt aus und erleben Sie den Unterschied!
Vitest-Website
Vite
Das obige ist der detaillierte Inhalt vonUnit-Tests mit Vitest: Ein Test-Framework der nächsten Generation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!