Pourquoi tester TypeScript n'est pas effrayant, mais rentable
\n\nVous avez écrit une superbe fonction en TypeScript, lancé le projet — tout fonctionne. Une semaine plus tard, vous avez ajouté une nouvelle fonctionnalité, et l'ancienne logique est cassée. Cela vous dit quelque chose ? Si oui, il est urgent de vous lier d'amitié avec les tests. Et n'ayez pas peur : les tests ne sont pas une corvée ennuyeuse, mais votre « détecteur de bugs » personnel qui fonctionne 24h/24 et 7j/7.
\n\nDans cet article, nous allons voir par où commencer le test TypeScript pour un débutant. Vous apprendrez à configurer l'environnement, à écrire votre premier test unitaire et à ne pas vous perdre dans les types. Pas de blabla — seulement de la pratique et des exemples de code concrets.
\n\nPourquoi tester TypeScript alors qu'il est déjà sûr ?
\n\nTypeScript détecte effectivement de nombreuses erreurs lors de la compilation : types incorrects, champs manquants, arguments erronés. Mais le typage statique ne protège pas des erreurs logiques. Votre fonction peut parfaitement passer la compilation, mais donner un résultat incorrect. Par exemple :
\n\nfunction sum(a: number, b: number): number {\n return a - b; // Erreur ! Soustraction au lieu d'addition\n}\n\nTypeScript ne dira rien — les types sont respectés. En revanche, un test unitaire montrera immédiatement que sum(2, 2) n'est pas égal à 4. C'est pourquoi tester TypeScript n'est pas un caprice, mais une nécessité pour tout projet sérieux.
Étape 1. Choisir l'outil : pourquoi Jest est le meilleur ami du débutant
\n\nIl existe plusieurs frameworks de test populaires sur le marché : Mocha, Jasmine, Vitest, Jest. Pour les débutants, je recommande vivement Jest. Pourquoi ?
\n\n- \n
- Fonctionne « prêt à l'emploi » — pas besoin de configuration longue. \n
- Mécanisme de mock intégré et couverture de code. \n
- Excellent support de TypeScript via
ts-jest. \n - Messages d'erreur clairs. \n
Installons Jest dans votre projet. Je suppose que vous avez déjà TypeScript. Sinon, créez un nouveau projet :
\n\nmkdir my-ts-project\ncd my-ts-project\nnpm init -y\nnpm install typescript jest @types/jest ts-jest --save-dev\n\nCréons maintenant un fichier jest.config.js à la racine du projet :
module.exports = {\n preset: 'ts-jest',\n testEnvironment: 'node',\n roots: ['/src'],\n testMatch: ['**/__tests__/**/*.ts', '**/?(*.)+(spec|test).ts'],\n}; \n\nEt ajoutons un script dans package.json :
"scripts": {\n "test": "jest",\n "test:watch": "jest --watch"\n}\n\nPrêt ! Vous pouvez maintenant écrire des tests.
\n\nÉtape 2. Écrire notre premier test en TypeScript
\n\nCréons une fonction simple dans le fichier src/math.ts :
export function add(a: number, b: number): number {\n return a + b;\n}\n\nexport function divide(a: number, b: number): number {\n if (b === 0) {\n throw new Error('Division par zéro interdite');\n }\n return a / b;\n}\n\nÉcrivons maintenant un test pour cette fonction. Créez un dossier src/__tests__/ et un fichier math.test.ts :
import { add, divide } from '../math';\n\ndescribe('Fonctions mathématiques', () => {\n test('additionne deux nombres correctement', () => {\n expect(add(2, 3)).toBe(5);\n expect(add(-1, 1)).toBe(0);\n expect(add(0, 0)).toBe(0);\n });\n\n test('divise deux nombres', () => {\n expect(divide(10, 2)).toBe(5);\n expect(divide(9, 3)).toBe(3);\n });\n\n test('lève une erreur lors de la division par zéro', () => {\n expect(() => divide(5, 0)).toThrow('Division par zéro interdite');\n });\n});\n\nLancez npm test et voyez le rapport vert. Félicitations — vous venez d'écrire vos premiers tests unitaires en TypeScript !
Que s'est-il passé ici ?
\n\n- \n
describe— regroupe les tests dans un groupe logique. \n testouit— un cas de test individuel. \n expect— une assertion qui vérifie