Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| web:api:prisma-fastify:p6 [2026/04/01 08:25] – [7. Erreurs à éviter] jcheron | web:api:prisma-fastify:p6 [2026/04/01 09:28] (Version actuelle) – [1. Rendre l'application testable] jcheron | ||
|---|---|---|---|
| Ligne 15: | Ligne 15: | ||
| <sxh bash; | <sxh bash; | ||
| npm install -D vitest supertest | npm install -D vitest supertest | ||
| + | npm install -D @types/ | ||
| </ | </ | ||
| Ligne 47: | Ligne 48: | ||
| ne pas faire '' | ne pas faire '' | ||
| on exporte une fonction pour créer une instance propre à chaque test | on exporte une fonction pour créer une instance propre à chaque test | ||
| + | </ | ||
| + | |||
| + | Mettre le lancement du serveur dans un fichier à part : | ||
| + | |||
| + | <sxh ts> | ||
| + | import {buildApp} from " | ||
| + | |||
| + | const app = buildApp() | ||
| + | |||
| + | app.listen({ port: 3000 }).then(() => { | ||
| + | console.log(" | ||
| + | }) | ||
| </ | </ | ||
| Ligne 52: | Ligne 65: | ||
| Créer ''/ | Créer ''/ | ||
| <sxh ts> | <sxh ts> | ||
| - | import { describe, it, expect } from " | + | let app: |
| - | import request from " | + | |
| - | import { buildApp } from " | + | |
| + | beforeAll(async () => { | ||
| + | app = buildApp() | ||
| + | await app.ready() | ||
| + | }) | ||
| + | |||
| + | afterAll(async () => { | ||
| + | await app.close() | ||
| + | }) | ||
| describe(" | describe(" | ||
| - | | + | |
| - | const app = buildApp() | + | const res = await request(app.server) |
| - | const res = await request(app.server) | + | .get("/ |
| - | .get("/ | + | |
| - | expect(res.status).toBe(200) | + | |
| - | expect(res.body.status).toBe(" | + | expect(res.body.status).toBe(" |
| - | }) | + | }) |
| }) | }) | ||
| </ | </ | ||
| Ligne 122: | Ligne 140: | ||
| ===== 6. Bonnes pratiques ===== | ===== 6. Bonnes pratiques ===== | ||
| - | 1 test = 1 comportement | + | * 1 test = 1 comportement |
| - | ne pas dépendre d’un autre test | + | |
| - | utiliser des données simples | + | |
| - | vérifier : | + | |
| - | status HTTP | + | |
| - | structure de réponse | + | |
| - | données retournées | + | |
| Ligne 142: | Ligne 160: | ||
| À la fin : | À la fin : | ||
| - | les endpoints sont testés automatiquement | + | * les endpoints sont testés automatiquement |
| - | les tests sont relançables à l’infini | + | |
| - | aucune dépendance à Next.js | + | |
| - | base solide pour le front | + | |