100 % Codeabdeckung erreichen: Ein praktischer Leitfaden
In diesem Artikel erfahren Sie, wie Sie effizient eine 100-prozentige Codeabdeckung für Ihr Projekt erreichen. Lasst uns eintauchen!
Vorbereitung
Bevor Sie beginnen, identifizieren Sie diese Schlüsselkomponenten:
Vorabplanung optimiert den Testprozess.
Praktische Umsetzung
In diesem Beispiel wird eine TypeScript-Datei verwendet:
Erstellen Sie einen Ordner test
im Stammverzeichnis Ihres Projekts. Tests werden in Dateien mit der Erweiterung .test.ts
(oder einer ähnlichen Erweiterung wie .spec.ts
) abgelegt.
Wir verwenden Mocha, Sinon und c8 für die Berichterstattung:
<code class="language-json"> "devDependencies": { "@types/mocha": "^10.0.9", "@types/sinon": "^17.0.3", "c8": "^10.1.2", "mocha": "^10.8.2", "sinon": "^19.0.2" }</code>
Diese Pakete müssen installiert werden. Weitere Bibliotheken werden später hinzugefügt.
Die folgenden Befehle führen Tests aus und generieren Berichte:
<code class="language-json"> "scripts": { "test": "mocha --require ts-node/esm --experimental-specifier-resolution=node", "test:watch": "mocha --watch --require ts-node/esm --experimental-specifier-resolution=node", "coverage": "c8 --reporter=lcov npm run test", "coverage:default": "c8 npm run test" },</code>
Der Befehl test:watch
ist entscheidend; Es führt Tests bei Codeänderungen automatisch erneut durch und macht so manuelle Neustarts überflüssig.
TypeScript-Kompilierung erfordert zusätzliche Module:
<code class="language-json"> "devDependencies": { "ts-node": "^10.9.2", "typescript": "^5.6.3" }</code>
Beispiel: Testen einer einfachen Funktion
Testen wir diese add
Funktion:
add.test.ts
<code class="language-typescript">export function add(a: number, b: number): number { return a + b; }</code>
Die entsprechende Testdatei:
add.ts
<code class="language-typescript">import { strict as assert } from 'assert'; import { add } from '../add'; describe('Function add()', () => { it('should return 5 when adding 2 and 3', () => { const result = add(2, 3); assert.equal(result, 5); }); // ... more test cases ... });</code>
Dadurch werden erwartete und tatsächliche Ergebnisse verglichen. Fehlschlagende Tests weisen auf Probleme hin. Durch gründliche Tests wird sichergestellt, dass Codeänderungen die vorhandene Funktionalität nicht beeinträchtigen.
DOM-Interaktionen testen
Um DOM-Manipulationen (z. B. Klickereignisse) zu testen, installieren Sie jsdom
und jsdom-global
:
<code class="language-json">"devDependencies": { "@types/node": "^22.9.0", "jsdom": "^25.0.1", "jsdom-global": "^3.0.2", }</code>
Konfigurieren Sie diese Pakete:
<code class="language-javascript">require("jsdom-global")(); global.DOMParser = window.DOMParser;</code>
Dadurch kann Node.js die DOM-Umgebung eines Browsers simulieren.
Asynchrone Vorgänge testen
Für asynchrone Funktionen (z. B. API-Aufrufe) verwenden Sie nock
und node-fetch
:
<code class="language-json">"devDependencies": { "nock": "^13.5.6", "node-fetch": "^2.7.0", }</code>
Konfigurieren Sie diese Pakete:
<code class="language-javascript">import fetch from "node-fetch"; global.fetch = fetch as any;</code>
nock
simuliert API-Antworten und bietet vorhersehbare und stabile Testumgebungen. node-fetch
stellt eine browserähnliche fetch
Implementierung für Node.js bereit.
Codecov-Integration
Zur Integration mit Codecov erstellen Sie ein GitHub-Repository und befolgen Sie die Einrichtungsanweisungen von Codecov. GitHub Actions kann das Hochladen von Berichten automatisieren. Ein Beispiel für einen GitHub Actions-Workflow:
<code class="language-json"> "devDependencies": { "@types/mocha": "^10.0.9", "@types/sinon": "^17.0.3", "c8": "^10.1.2", "mocha": "^10.8.2", "sinon": "^19.0.2" }</code>
Dieser Workflow führt bei jeder Push- oder Pull-Anfrage Tests durch und lädt Abdeckungsberichte zu Codecov hoch. Anschließend kann Ihrer README-Datei ein Codecov-Abzeichen hinzugefügt werden.
Fazit
Indem Sie diese Schritte befolgen und an Ihre spezifischen Anforderungen anpassen, können Sie eine 100-prozentige Testabdeckung erreichen und aufrechterhalten und so die Codequalität und -zuverlässigkeit verbessern. Denken Sie daran, sich wiederholenden Testcode für eine bessere Wartbarkeit in wiederverwendbare Funktionen umzuwandeln.
Das obige ist der detaillierte Inhalt vonWie erhalte ich eine prozentuale Codeabdeckung? ✅. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!