Tester un changement d’état dans un composant avec enzyme

En travaillant actuellement sur un projet React, je suis tombé sur une problématique dans un de mes tests fonctionnels où nous utilisons enzyme. Je vous explique tout cela.

Un composant pour démontrer le problème

Imaginez un composant React qui affiche un texte particulier quand l’état interne du composant a une certaine valeur. Voici un exemple trivial: nous voulons afficher le texte ‘😭 It\’s too late to apologize.’ quand l’état expired du composant est à true. La contrainte est que nous mettons cette valeur à true 1h après avoir monté le composant.

Imaginez maintenant que je veuille mettre en place un test qui m’assure que ce fonctionnement est toujours valide. En théorie, il faudrait monter le composant et attendre 1h avant de voir si le texte est correctement mis à jour. Il y a surement une manière plus rapide pour gérer cela et c’est là que enzyme montre toute sa force.

Enzyme et setState à la rescousse

Nous allons mettre en place un test avec enzyme et simuler le changement d’état dans le composant avant de vérifier le texte qui s’affiche. Pour vérifier le texte par défaut, c’est assez simple:

Maintenant, pour pouvoir simuler le changement d’état (expired) sans attendre 1h, nous allons utiliser setState de enzyme et vérifier ensuite que le texte affiché est bien le second.

Maintenant, nos tests valident bien le changement d’état dans le composant sans trop de difficulté.

N’hésitez pas à laisser un commentaire pour en discuter.

Email this to someoneTweet about this on TwitterShare on Facebook8Share on Google+0Share on LinkedIn0Share on Reddit0