Dans le paysage des API en rapide évolution, les équipes ont besoin de deux choses : un retour rapide au niveau du code et une validation de bout en bout fiable sur tous les environnements. Supertest fournit la première – des assertions HTTP ultra-rapides pour les services Node.js. Et lorsque vous êtes prêt à collaborer entre les rôles, à exécuter des tests de scénario, à simuler des dépendances et à publier de la documentation, une plateforme de test d'API comme Apidog complète le tableau. Ce guide officiel et objectif explique comment utiliser Supertest pour tester les API, où il excelle, et comment l'associer à Apidog pour accélérer la livraison en toute confiance.
Apidog
Qu'est-ce que Supertest ?
Supertest est une bibliothèque Node.js légère pour tester les serveurs HTTP. Elle s'appuie sur superagent et vous permet d'écrire des assertions expressives sur les codes de statut, les en-têtes et les corps de réponse, sans avoir à lancer de clients externes. C'est l'outil idéal lorsque vous :
- Avez besoin de tests rapides et déterministes pendant le développement
- Voulez tester les contrôleurs/routeurs près du code
- Préférez une empreinte de dépendance minimale et une exécution rapide
- Pourquoi les équipes apprécient Supertest parmi les outils de test d'API modernes :
- Assertions simples et chaînables avec
.expect()
- Fonctionne avec n'importe quel exécuteur de tests (Jest, Mocha, Vitest)
- Accepte soit une URL en cours d'exécution, soit une application
http.Server
/Express en cours de traitement - S'intègre facilement avec les outils de CI et de couverture de code
Lorsque vous avez besoin de collaboration, de gouvernance de la conformité des API, d'orchestration d'environnement et de tests visuels, vous complétez Supertest avec une plateforme de test d'API comme Apidog. Le reste de cet article montre comment faire les deux.
Installer et configurer Supertest
Vous pouvez installer Supertest en quelques minutes. Utilisez npm, pnpm ou yarn :
# npm npm install --save-dev supertest jest
# pnpm pnpm add -D supertest jest
# yarn
yarn add -D supertest jest
Une API Express minimale (app.js
) :
const express = require('express');
const app = express();
app.get('/greet', (req, res) => {
const name = req.query.name || 'World';
res.json({ message: `Hello, ${name}!` });
});
module.exports = app;
Un test simple (app.test.js
) utilisant Supertest + Jest :
const request = require('supertest');
const app = require('./app');
describe('GET /greet', () => {
it('greets anonymously', async () => {
const res = await request(app)
.get('/greet')
.expect('Content-Type', /json/)
.expect(200);
expect(res.body.message).toBe('Hello, World!');
});
it('greets by name', async () => {
const res = await request(app)
.get('/greet?name=Alice')
.expect('Content-Type', /json/)
.expect(200);
expect(res.body.message).toBe('Hello, Alice!');
});
});
Mettez à jour package.json
pour exécuter les tests :
{
"scripts": {
"test": "jest"
}
}
Exécutez vos tests :
npm test
Si vous préférez Mocha ou Vitest, Supertest fonctionne de la même manière – l'API .expect()
est identique.
Écrire d'excellentes assertions Supertest
La puissance de Supertest réside dans ses assertions chaînables – rapides à écrire et faciles à lire. Voici des modèles que vous utiliserez tous les jours :
- Statut et en-têtes
request(app)
.get('/users')
.expect(200)
.expect('Content-Type', /json/);
- Valider la structure du corps avec une fonction personnalisée
request(app)
.get('/users')
.expect(200)
.expect(res => {
if (!Array.isArray(res.body)) throw new Error('Expected an array');
if (res.body.length === 0) throw new Error('Expected at least one user');
});
- Correspondance exacte du corps ou regex
request(app)
.get('/health')
.expect(200)
.expect({ status: 'ok' });
request(app)
.get('/health')
.expect(200)
.expect(/"status":"ok"/);
- Authentification, requête et charges utiles
request(app)
.post('/posts')
.set('Authorization', 'Bearer test-token')
.send({ title: 'Hello', body: 'World' })
.expect(201)
.expect(res => {
if (!res.body.id) throw new Error('Missing id');
});
- Persister les cookies entre les requêtes en utilisant
agent
const agent = request.agent(app);
await agent.get('/login').expect(200);
await agent.get('/me').expect(200).expect(res => {
if (!res.body.user) throw new Error('Expected authenticated user');
});
Conseil : Gardez les tests petits et déterministes. Supertest excelle dans la validation des contrôleurs, des middlewares et des adaptateurs de manière isolée.
Supertest en CI/CD et dans les monorepos
Pour maintenir une qualité constante, exécutez Supertest en CI pour chaque pull request. Une configuration typique :
- Exécutez les suites unitaires + Supertest en parallèle pour la vitesse
- Utilisez une base de données de test (conteneurs ou une base de données en mémoire)
- Initialisez de petits ensembles de données par fichier de test pour éviter le couplage entre les tests
- Échouez rapidement sur les régressions de contrat (statut, en-têtes, schéma)
Exemple d'extrait GitHub Actions :
name: api-tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm test -- --ci
Dans les monorepos, n'exécutez que les tests affectés et mettez en cache node_modules
pour accélérer les boucles de rétroaction. Le faible surcoût de Supertest en fait un excellent choix pour les grandes bases de code.
Quand utiliser une plateforme de test d'API
Supertest est excellent pour un retour rapide au niveau du code. Mais les réalités de la production exigent davantage :
- Collaboration inter-équipes (produit, backend, frontend, QA)
- Conception et gouvernance d'API axées sur le contrat (OpenAPI)
- Serveurs de simulation pour débloquer le développement front-end
- Tests de scénario basés sur les données et assertions visuelles
- Variables multi-environnements, secrets et données de test
- Orchestration CI et documentation partageable et interactive
C'est là qu'une plateforme de test d'API comme Apidog brille. Elle unifie la conception d'API, la simulation, le test, le débogage et la documentation pour maintenir les équipes alignées et vos portes de qualité durables.

Pourquoi Apidog complète Supertest
- Concevez et versionnez les spécifications OpenAPI visuellement ou importez des spécifications existantes
- Générez automatiquement des serveurs de simulation pour paralléliser le travail front-end et back-end
- Créez des tests avec des assertions visuelles et l'extraction de variables
- Validez les réponses par rapport à votre spécification et prévenez la dérive de schéma
- Publiez une documentation API interactive en ligne que votre équipe et vos partenaires peuvent consulter
Un flux de travail combiné : Supertest + Apidog
Utilisez Supertest pour les vérifications centrées sur le développeur et Apidog pour la collaboration de bout en bout. Voici une répartition pragmatique des responsabilités :
Tâche | Supertest | Apidog |
Vérifications unitaires du contrôleur/middleware | Excellent | Complémentaire |
Régressions rapides de contrat (statut/en-têtes) | Excellent | Excellent |
Gouvernance de schéma (OpenAPI) | Manuel | De première classe |
Serveurs de simulation pour le front-end | Limité | Intégré |
Scénarios basés sur les données | Limité | De première classe |
Orchestration CI à travers les environnements | Bon | De première classe |
Collaboration d'équipe/docs | Minimal | De première classe |
Exemple de flux :
- Définissez ou importez la spécification API dans Apidog. Alignez-vous sur les champs, les erreurs et les versions.
- Générez des simulations pour que le front-end puisse commencer immédiatement.
- Implémentez les points de terminaison en Node.js ; écrivez des vérifications Supertest pour le statut/les en-têtes/les charges utiles.
- Dans Apidog, créez des tests de scénario et des assertions visuelles par rapport à la même spécification.
- Bloquez les fusions avec les deux suites en CI. Publiez la documentation depuis Apidog.
Modèles Supertest avancés
Quelques conseils supplémentaires qui portent leurs fruits :
- Centralisez votre
request = request(app)
ou l'URL de base dans une fonction utilitaire pour éviter la répétition - Utilisez des fabriques/fixtures pour des charges utiles reproductibles
- Combinez Supertest avec des validateurs de schéma (par exemple,
ajv
) pour faire respecter les contrats de réponse - Pour le streaming ou le SSE, testez les en-têtes et les modèles de morceaux ; pour les WebSockets, utilisez un client spécifique au protocole et des tests d'intégration dans Apidog
- Maintenez un linter et un formateur stricts pour préserver la lisibilité sous la pression des délais
Conclusion : Une approche équilibrée de la qualité des API
Les API de qualité sont construites avec à la fois rapidité et rigueur. Supertest offre aux développeurs un moyen rapide et expressif de vérifier les points de terminaison près du code – parfait pour des boucles de rétroaction courtes et pour détecter les régressions avant qu'elles ne sortent d'une branche. C'est simple, fiable et éprouvé sur de nombreux backends Node.js.
Cependant, à mesure que les systèmes se développent, vous avez besoin de collaboration, de gouvernance des contrats et d'exécution sensible à l'environnement. C'est là qu'Apidog – une plateforme de test d'API intégrée – élève votre flux de travail. En unifiant la conception des contrats (OpenAPI), les serveurs de simulation, les assertions visuelles, les variables d'environnement et l'orchestration CI, Apidog aide les équipes à avancer de concert de l'idée à la livraison. Le front-end, le back-end et l'assurance qualité peuvent partager la même source de vérité tandis que Supertest continue de protéger vos chemins de code avec des assertions rapides et déterministes.
Si vous voulez une vélocité confiante, utilisez les deux :
- Gardez Supertest pour des tests rapides au niveau du code que les développeurs adorent
- Adoptez Apidog pour concevoir des contrats API, débloquer les équipes avec des simulations, valider les réponses par rapport aux spécifications et publier la documentation
Cette approche équilibrée produit des API qui sont non seulement correctes aujourd'hui, mais aussi résilientes à mesure que votre produit évolue. Commencez à écrire vos vérifications Supertest dès maintenant – et donnez-leur vie dans un pipeline de qualité production avec Apidog.