Maison > interface Web > js tutoriel > Comment obtenir un % de couverture de code ? ✅

Comment obtenir un % de couverture de code ? ✅

DDD
Libérer: 2025-01-17 00:30:09
original
582 Les gens l'ont consulté

Atteindre une couverture de code à 100 % : un guide pratique

Cet article explique comment obtenir efficacement une couverture de code à 100 % pour votre projet. Allons-y !

How to get % code coverage? ✅

Préparation

Avant de commencer, identifiez ces éléments clés :

  1. Portée du test : Définir le segment de code à tester (fonction, module, etc.).
  2. Bibliothèques tierces : Choisissez des bibliothèques de test (par exemple, Mocha).
  3. Format du rapport : Sélectionnez le format du rapport (par exemple, lcov pour Codecov).

La planification initiale rationalise le processus de test.

Mise en œuvre pratique

Cet exemple utilise un fichier TypeScript :

How to get % code coverage? ✅

Créez un dossier test dans le répertoire racine de votre projet. Les tests sont placés dans des fichiers avec l'extension .test.ts (ou similaire, comme .spec.ts).

How to get % code coverage? ✅

Nous utiliserons Mocha, Sinon et c8 pour les rapports de couverture :

<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>
Copier après la connexion
Copier après la connexion

Ces packages doivent être installés. Des bibliothèques supplémentaires seront ajoutées ultérieurement.

Les commandes suivantes exécutent des tests et génèrent des rapports :

<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>
Copier après la connexion

La commande test:watch est cruciale ; il réexécute automatiquement les tests sur les modifications de code, éliminant ainsi les redémarrages manuels.

How to get % code coverage? ✅

La compilation TypeScript nécessite des modules supplémentaires :

<code class="language-json">  "devDependencies": {
    "ts-node": "^10.9.2",
    "typescript": "^5.6.3"
  }</code>
Copier après la connexion

Exemple : tester une fonction simple

Testons cette add fonction :

add.test.ts

<code class="language-typescript">export function add(a: number, b: number): number {
    return a + b;
}</code>
Copier après la connexion

Le fichier de test correspondant :

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>
Copier après la connexion

Ceci compare les résultats attendus et réels. L’échec des tests indique des problèmes. Des tests approfondis garantissent que les modifications du code n'interrompent pas les fonctionnalités existantes.

Test des interactions DOM

Pour tester les manipulations DOM (par exemple, les événements de clic), installez jsdom et jsdom-global :

<code class="language-json">"devDependencies": {
    "@types/node": "^22.9.0",
    "jsdom": "^25.0.1",
    "jsdom-global": "^3.0.2",
}</code>
Copier après la connexion

Configurez ces packages :

<code class="language-javascript">require("jsdom-global")();

global.DOMParser = window.DOMParser;</code>
Copier après la connexion

Cela permet à Node.js de simuler l'environnement DOM d'un navigateur.

Test des opérations asynchrones

Pour les fonctions asynchrones (par exemple, les appels API), utilisez nock et node-fetch :

<code class="language-json">"devDependencies": {
    "nock": "^13.5.6",
    "node-fetch": "^2.7.0",
}</code>
Copier après la connexion

Configurez ces packages :

<code class="language-javascript">import fetch from "node-fetch";

global.fetch = fetch as any;</code>
Copier après la connexion

nock se moque des réponses de l'API, fournissant des environnements de test prévisibles et stables. node-fetch fournit une implémentation fetch de type navigateur pour Node.js.

Intégration Codecov

Pour intégrer Codecov, créez un référentiel GitHub et suivez les instructions de configuration de Codecov. GitHub Actions peut automatiser le téléchargement de rapports. Un exemple de workflow GitHub Actions :

<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>
Copier après la connexion
Copier après la connexion

Ce workflow exécute des tests et télécharge des rapports de couverture sur Codecov à chaque demande push ou pull. Un badge Codecov peut ensuite être ajouté à votre README.

How to get % code coverage? ✅

Conclusion

En suivant ces étapes et en les adaptant à vos besoins spécifiques, vous pouvez atteindre et maintenir une couverture de test à 100 %, améliorant ainsi la qualité et la fiabilité du code. N'oubliez pas de refactoriser le code de test répétitif en fonctions réutilisables pour une meilleure maintenabilité.

How to get % code coverage? ✅

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal