Vue : construire une application web (école d'ingénieur) · Chapitre 11 · Application directe du cours
Lire un échec
Tests et mise en production · niveau 1 (application)
Énoncé
On reprend le rapport d'échec de la section « Lire un échec ». Sans regarder le composant, dire ce que le test a fait, ce qu'il attendait et ce qu'il a obtenu, et en déduire le défaut du code. Corriger le composant, puis vérifier que les quatre tests passent.
Corrigé
Le test « ne dépasse pas le maximum » a monté le composant avec modelValue: 5 et max: 5, cliqué sur le bouton « Un de plus », et attendu qu'aucun événement update:modelValue ne soit émis (toBeUndefined). Il a reçu [[6]] : un événement, avec la valeur 6. Le composant ne borne donc pas la quantité par le maximum, et son bouton « + » n'est pas désactivé au maximum (sinon le clic n'aurait rien produit). Correction (version de demo-tests) :
<script setup>
const quantite = defineModel({ type: Number, default: 1 });
const props = defineProps({
max: { type: Number, default: 10 },
});
function changer(pas) {
quantite.value = Math.min(props.max, Math.max(1, quantite.value + pas));
}
</script>
avec, dans le gabarit, :disabled="quantite >= max" sur le bouton « + ». Les quatre tests passent :
RUN v5.0.3 …
✓ tests/ChoixQuantite.test.js (4 tests) 23ms
✓ ChoixQuantite (4)
✓ affiche la quantité reçue 15ms
✓ le bouton + émet la nouvelle quantité 5ms
✓ le bouton − est désactivé à 1 1ms
✓ ne dépasse pas le maximum 1ms
Test Files 1 passed (1)
Tests 4 passed (4)
Start at 20:29:07
Duration 534ms (environment 76%, import 11%, transform 8%, tests 5%, worker 1%)
Il fallait aussi récupérer le résultat de defineProps dans une constante pour lire props.max dans le script.
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.