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 FacebookShare on Google+Share on LinkedInShare on Reddit

Docker: nettoyer les images non-utilisées et gagner des gigas :)

Un peu de nettoyage ce weekend?

Quand on utilise docker depuis un certain temps, il arrive que certaines images prennent de l’espace sur le disques dure sans qu’elles ne soient nécessaires. En effet, le nettoyage des images ne se fait pas automatiquement et il faut donc régulièrement faire soi-même la maintenance.

En cherchant un peu sur internet, on peut facilement trouver des scripts personnalisés pour cela. Voici à quoi cela ressemble :

Continue reading

Email this to someoneTweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInShare on Reddit