Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →