Service Node.js avec architecture modulaire (Entities, Services, Controllers)
mon-service/
├── src/
│ ├── entities/ # Modèles de données (User.js)
│ ├── services/ # Logique métier (UserService.js)
│ ├── controllers/ # Gestion des routes (UserController.js)
├── tests/
│ ├── unit/ # Tests unitaires
│ ├── web/ # Tests d'intégration web
├── index.js # Point d'entrée
├── package.json # Dépendances
├── Dockerfile # Configuration Docker
└── jest.config.js # Configuration Jest
npm install# Lancer tous les tests avec couverture
npm test
# Lancer uniquement les tests unitaires
npm run test:unit
# Lancer uniquement les tests web/intégration
npm run test:web
# Lancer les tests en mode watch
npm run test:watch
# Démarrer le serveur
npm startLe projet inclut :
- Tests unitaires : Validation des entités et logique des services
- Tests d'intégration : Vérification des endpoints API via HTTP
Couverture minimale requise : 70%
Ce projet est en Node.js, donc l'equivalent de JaCoCo est la couverture native de Jest (Istanbul).
- Rapport local HTML :
coverage/lcov-report/index.html - Rapport local machine-readable :
coverage/lcov.info
npm testPuis ouvrir :
coverage/lcov-report/index.html
Vous y verrez :
- couverture globale (statements, branches, functions, lines)
- details par fichier
- lignes couvertes/non couvertes
Le workflow .github/workflows/action.yml :
- execute les tests avec couverture
- upload
coverage/lcov.infovers Codecov - fonctionne sur
pushetpull_request(branchesmasteretdevelop)
Pour activer Codecov :
- Connectez le repository sur https://app.codecov.io.
- Si le repo est prive, ajoutez le secret GitHub
CODECOV_TOKEN. - Verifiez dans une PR que le statut/rapport de couverture apparait.
- Viser au moins 80% en production
- Tester les cas de succes et d'erreur
- Ne pas gonfler artificiellement la couverture avec des tests sans valeur
- Utiliser la couverture comme indicateur, pas comme seul objectif
# Tous les tests
npm test
# Uniquement unitaires
npm run test:unit
# Uniquement web
npm run test:web| Méthode | Route | Description |
|---|---|---|
| GET | / |
Message de bienvenue |
| GET | /health |
Vérification de santé du service |
| GET | /users |
Récupérer tous les utilisateurs |
| GET | /users/:id |
Récupérer un utilisateur |
| POST | /users |
Créer un utilisateur |
| PUT | /users/:id |
Mettre à jour un utilisateur |
| DELETE | /users/:id |
Supprimer un utilisateur |
# Créer un utilisateur
curl -X POST http://localhost:8080/users \
-H "Content-Type: application/json" \
-d '{"name":"John Doe","email":"john@example.com"}'
# Récupérer les utilisateurs
curl http://localhost:8080/users
# Vérifier la santé
curl http://localhost:8080/healthdocker build -t mon-service:1 .docker run -p 8080:8080 mon-service:1Les tests s'exécutent automatiquement via GitHub Actions pour chaque push et PR.
Voir .github/workflows/action.yml pour la configuration complète.