E2E supertest

NestJS 🟡 Mid

Définition

Tests end-to-end qui simulent de vraies requêtes HTTP via la librairie supertest. Testent le pipeline complet du request au response.

Analogie

Comme un client mystère qui teste le restaurant de A a Z : de la réservation au dessert.

Exemple de code

const app = moduleFixture.createNestApplication();
await app.init();

await request(app.getHttpServer())
  .post('/users')
  .send({ email: '[email protected]', password: '12345678' })
  .expect(201)
  .expect(res => expect(res.body.email).toBe('[email protected]'));

Cas d'usage

Valider que les endpoints, la validation, les guards et la sérialisation fonctionnent ensemble.

Anti-pattern

Ne tester que les services unitairement sans jamais vérifier le pipeline HTTP complet.
#testing#interview

En entretien

  1. Quelle différence entre un test unitaire de service et un test E2E avec supertest ?

    Le test E2E simule une vraie requête HTTP via supertest et valide tout le pipeline, du request jusqu'à la response - comme un client mystère qui teste le restaurant de A à Z, de la réservation au dessert. Ça permet de vérifier que les endpoints, la validation, les guards et la sérialisation fonctionnent ensemble.

  2. Pourquoi ne pas se contenter de tester les services unitairement ?

    Parce que ça ne vérifie jamais le pipeline HTTP complet - guards, pipes, filters compris - ce qui est justement l'anti-pattern à éviter. Un test E2E crée une vraie NestApplication et envoie une requête complète pour s'assurer que tout s'enchaîne correctement.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre