Unit-Tests mit Vitest: Ein Test-Framework der n?chsten Generation
Dec 29, 2024 am 11:46 AMWarum Vitest w?hlen?
Vitest wurde unter Berücksichtigung moderner Entwicklungen entwickelt. Darum sticht es heraus:
Geschwindigkeit
Vitest nutzt Vite als Grundlage und nutzt seinen blitzschnellen Hot Module Replacement (HMR) und esbuild für die Bündelung und Transpilation. Dies ergibt:
- Smart & Instant Watch-Modus: Tests werden nur für betroffene Dateien erneut ausgeführt, sodass die Feedbackschleife sofort erfolgt.
- Out-of-box ESM-Unterstützung: Moderne Projekte profitieren von der direkten Unterstützung für ES-Module ohne Hacks.
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.
Kompatibilit?t
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.
Entwicklererfahrung
- Integriert in Vites HMR für eine schnelle Testiteration.
- Einfache API und Konfiguration.
- Reichhaltiges ?kosystem und wachsende Community-Unterstützung.
---
Vitest einrichten
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.
Installation
- Stellen Sie sicher, dass Node.js und npm/yarn/pnpm installiert sind.
- Installieren Sie Vitest und seine Peer-Abh?ngigkeiten:
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
Konfiguration
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', }, });
Hinzufügen von Setup-Dateien
Setup-Dateien werden zum Konfigurieren der Testumgebung verwendet. Erstellen Sie eine test/setup.ts-Datei:
import '@testing-library/jest-dom';
Skripte hinzufügen
Aktualisieren Sie Ihre package.json, um ein Testskript aufzunehmen:
{ "scripts": { "test": "vitest" } }
---
Unit-Tests mit Vitest schreiben
Vitest bietet eine Jest-?hnliche API, die das Schreiben von Tests unkompliziert macht. Hier ist ein einfaches Beispiel:
Beispiel: React-Komponente
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>; };
Schreibtests
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(); }); });
Ausführen von Tests
Führen Sie die Tests aus mit:
npm-Lauftest
Sie sehen eine Ausgabe ?hnlich dieser:
? Die Begrü?ungskomponente gibt die richtige Begrü?ung wieder.
---
Erweiterte Funktionen
Verspottung
Vitest unterstützt direkt Mocking-Module und -Funktionen:
import { vi } from 'vitest'; const mockFn = vi.fn(); mockFn(); expect(mockFn).toHaveBeenCalled();
Snapshot-Tests
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(); });
Leistungstests
Verwenden Sie die CLI-Optionen von Vitest, um die Leistung zu messen:
vitest --run --coverage
---
Abschluss
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!
Referenzen
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!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

Java und JavaScript sind unterschiedliche Programmiersprachen, die jeweils für verschiedene Anwendungsszenarien geeignet sind. Java wird für die Entwicklung gro?er Unternehmen und mobiler Anwendungen verwendet, w?hrend JavaScript haupts?chlich für die Entwicklung von Webseiten verwendet wird.

JavaScriptComents AreseessentialFormaintaining, Lesen und GuidingCodeexexecution.1) einzelne Linecommments Arequickickexplanationen.2) Multi-LindexplainComproxlogicorProvedetailedDocumentation.3) InlinecommentsclarifyspecificPartsosensofCode.BestPracticic

Die folgenden Punkte sollten bei der Verarbeitung von Daten und Zeiten in JavaScript festgestellt werden: 1. Es gibt viele M?glichkeiten, Datumsobjekte zu erstellen. Es wird empfohlen, ISO -Format -Zeichenfolgen zu verwenden, um die Kompatibilit?t sicherzustellen. 2. Die Zeitinformationen erhalten und festlegen k?nnen und setzen Sie Methoden fest, und beachten Sie, dass der Monat mit 0 beginnt. 3. Die manuell formatierende Daten sind Zeichenfolgen erforderlich, und auch Bibliotheken von Drittanbietern k?nnen verwendet werden. 4. Es wird empfohlen, Bibliotheken zu verwenden, die Zeitzonen wie Luxon unterstützen. Das Beherrschen dieser wichtigen Punkte kann h?ufige Fehler effektiv vermeiden.

PlatztagsattheBottomofabogpostorwebpageServeSpracticalPurposesforseo, Usexperience und design.1ithelpswithseobyallowingEnginestoaccessKeyword-relevantTagswithoutClutteringHemainContent.2.

JavaScriptispreferredforwebdevelopment,whileJavaisbetterforlarge-scalebackendsystemsandAndroidapps.1)JavaScriptexcelsincreatinginteractivewebexperienceswithitsdynamicnatureandDOMmanipulation.2)Javaoffersstrongtypingandobject-orientedfeatures,idealfor

JavaScripthassevenfundamentaldatatypes:number,string,boolean,undefined,null,object,andsymbol.1)Numbersuseadouble-precisionformat,usefulforwidevaluerangesbutbecautiouswithfloating-pointarithmetic.2)Stringsareimmutable,useefficientconcatenationmethodsf

Ereigniserfassung und Blase sind zwei Phasen der Ereignisausbreitung in DOM. Die Erfassung erfolgt von der oberen Schicht bis zum Zielelement, und die Blase ist vom Zielelement bis zur oberen Schicht. 1. Die Ereigniserfassung wird implementiert, indem der UseCapture -Parameter von AddEventListener auf true festgelegt wird. 2. Ereignisblase ist das Standardverhalten, Uscapture ist auf false oder weggelassen. 3. Die Ereignisausbreitung kann verwendet werden, um die Ereignisausbreitung zu verhindern. 4. Event Bubbling unterstützt die Ereignisdelegation, um die Effizienz der dynamischen Inhaltsverarbeitung zu verbessern. 5. Capture kann verwendet werden, um Ereignisse im Voraus abzufangen, wie z. B. Protokollierung oder Fehlerverarbeitung. Das Verst?ndnis dieser beiden Phasen hilft dabei, das Timing und die Reaktion von JavaScript auf Benutzeroperationen genau zu steuern.

Java und JavaScript sind verschiedene Programmiersprachen. 1.Java ist eine statisch typisierte und kompilierte Sprache, die für Unternehmensanwendungen und gro?e Systeme geeignet ist. 2. JavaScript ist ein dynamischer Typ und eine interpretierte Sprache, die haupts?chlich für die Webinteraktion und die Front-End-Entwicklung verwendet wird.
