Tester

La règle

Un fichier de test par composant, dans tests/ : un vrai broker, une sonde abonnée à ses émissions, et l'injection des examples du catalogue. Aucun monkey-patch : on construit l'objet comme le fait la composition, avec d'autres deps.

Pourquoi

C'est ici que deps se paie : un composant qui persiste reçoit un faux dépôt, un canal reçoit un faux socket. Et la livraison étant synchrone vue de l'extérieur, on asserte juste après publish.

Dans le chat

Le dossier livré n'a pas de tests ; les tutos en fournissent pour le projet « assiettes ». Pour gestion_messages, la sonde émettrait message_demande avec les clés id et session, et deps.now fixerait la date :

const session = { data: { pseudo: "alice", connectes: [{ id: "s1", pseudo: "alice", ecrit: false }] } };
const messages = new GestionMessages(broker, "gestion_messages", { db, now: () => new Date("2026-11-02T10:30:00Z") });
broker.publish(probe, { message_demande: { ref: REF, texte: "bonjour" }, id: "s1", session });
console.assert(probe.received[0]?.message_poste?.message?.poste_le === "2026-11-02T10:30:00.000Z");

Contre-exemple

GestionMessages.prototype.handleMessage = vi.fn(); // monkey-patch : on ne teste plus le composant

La sonde

Composants client

Motif identique. La sonde joue le canal après handshake : elle émet les clientReceives du CHANNEL et s'abonne aux clientEmits. jsdom, dépendance de dev sans build, fournit un document réel : le test prouve aussi le rendu.

Deux règles : un scénario = un monde, et les assertions portent sur ce que voit l'utilisateur.

Prouver le catalogue

node test_engine.js rejoue chaque exemple et chaque contre-exemple. Le tuto 6 montre le fichier.

Tests avec visualisation web

L'essentiel décrit aussi des pages public/tests/<composant>.html : le composant à gauche, à côté des scénarios à jouer en cliquant et la liste des messages échangés, avec la possibilité de rédiger un message à envoyer. Pour un composant client, la page simule le canal en s'inscrivant directement au broker ; pour un composant serveur, un test Node sert public/ et le vrai canal, avec un catalogue réduit. La démo du site est bâtie sur ce principe.