JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 11 · Application directe du cours
Tester un formatage
Erreurs, stockage et qualité du code · niveau 1 (application)
Énoncé
La fonction formater(secondes) de l'exercice 9.11 transforme 75 en « 1:15 ». Écrire un fichier de tests pour node --test : cas ordinaires, moins d'une minute, zéro, une heure. Que renvoie-t-elle pour ? Faut-il la corriger, ou le documenter par un test ?
Corrigé
import { test } from "node:test";
import assert from "node:assert/strict";
import { formater } from "./formater.js";
test("minutes et secondes", () => {
assert.equal(formater(75), "1:15");
assert.equal(formater(120), "2:00");
});
test("moins d'une minute : zéro devant les secondes", () => {
assert.equal(formater(5), "0:05");
assert.equal(formater(0), "0:00");
});
test("une heure et plus reste en minutes", () => {
assert.equal(formater(3600), "60:00");
});
test("une valeur négative donne un affichage absurde", () => {
assert.equal(formater(-5), "-1:-5"); // à garder en tête : l'appelant doit s'arrêter à 0
});
Les quatre tests passent (exercices/ex6-tests/). Pour , Math.floor(-5 / 60) vaut et -5 % 60 vaut (le reste a le signe du dividende) : « -1:-5 ». Dans l'exercice 9.11, le compte à rebours s'arrête à zéro, la valeur ne peut pas se produire ; le dernier test documente ce comportement. Si la fonction devait servir ailleurs, il vaudrait mieux lever une RangeError et changer le test en assert.throws.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.