📐 Construire une app en JS
02 Premier Test

Notre premier test

La toute première ligne de code du projet, ce sera un test.

Tatouons ce mantra sur le bras. Ou ailleurs ou vous voulez.

La première ligne ne sera pas le setup du framework, ni la fonction d'inscription, ni une page web. Ce sera iun test.

Installer l'environnement de test

Et la première dépendance du projet sera le moteur de test. Alors installons vitest. Il n'y aura probablement rien d'autre à installer avant plusieurs jours.

mkdir booking
cd booking
yarn init
yarn add -D vitest

Pourquoi l'option -D ? Parce qu'il s'agit d'une dépendance de développement. Dans la version en production, cette dépendance est inutile.

Mais alors quelles seront les dépendances en production ? Pour le moment aucune !

Notre premier test

J'adore ce moment.

Parce qu'il pose des questions structurantes pour notre projet :

1) Par quoi commencer ?

Dit autrement, quelle est la toute première fonctionnalité que l'on veut coder ? Quelle est celle qui est au coeur du projet ?

Non, ce n'est pas l'inscription. Ni la création de la fiche d'un hébergement. L'épicentre de notre webapp, c'est la réservation d'un hébergement.

2) Sous quelle forme souhaite-t-on invoquer la fonctionnalité ?

Soyez sympa avec vous-même. Mais exigeant aussi.

Donnez-vous la liberté de choisir la façon la plus simple et explicite d'exécuter la fonctionnalité.

3) Quel résultat attendu ?

Quand un hôte réserve un hébergement, qu'obtient-il en retour ?

Coimment vérifier que la fonctionnalité est celle qu'on voulait ?

4) Qu'est-ce qui peut mal se passer ?

Quels sont les erreurs possibles ?

Quelles suites leur donner ?

Alors puisqu'il faut bien se lancer, voilà mon premier test :

const booking = book(accomodation, tenant, stay);
expect(booking.status).toBe("confirmed");

Je veux une fonction de réservation book qui prend 3 paramètres :

  • accomodation : l'hébergement concerné par la réservation
  • tenant : le locataire qui veut réserver l'hébergement
  • stay : le détail du séjour (dates de début/fin, nombre de personnes)

Et qui retourne une réservation booking dotée d'un état, qui vaut confirmed si elle est acceptée.

Observez comment en 2 lignes on fait surgir pleins de questions !

Ce sont les débats autour de ces questions qui feront la valeur du code.

Alors creusons un peu.