Les tests en Vue.Js avec Vue Test Utils (VTU)

Par hjoseph, 23 mars, 2024
Logo Vue + Jest

Les tests en programmation sont des éléments essentiels, car ils permettent de s’assurer du fonctionnement d’un projet, de détecter des erreurs qui peuvent se présenter dans le code qui a été produit, de fournir de la documentation pour mieux comprendre les méthodes, de faciliter la compréhension du code et de repérer les erreurs logiques le plus tôt possible. Vue.Js offre une bibliothèque officielle nommée Vue Test Utils qui a été conçue dans le but de simplifier la réalisation de ces tests. Cette librairie permet d’obtenir des fonctions qui permettent de valider des attributs, de faire des requêtes HTTP, d’exécuter des fonctions asynchrones et de tester des valeurs du store.

Installation 

Il existe plusieurs façons d’installer Vue Test Utils dépendamment des configurations actuelles.

Avec Vue CLI :

Pour pouvoir exécuter les tests, il faut installer un outil de test, il en existe plusieurs disponibles sur le web, dans ce cas-ci, Jest, qui est l’un des plus connus, sera utilisé.

La commande pour installer Jest qui récupère toutes les dépendances nécessaires est :
$ vue add unit-jest

Ensuite, pour installer Vue Test Utils la commande est :

$ npm install --save-dev @vue/test-utils

Installation manuelle :

La commande pour installer Vue Test Utils et Jest manuellement est :
$ npm install --save-dev @vue/test-utils vue-jest

Pour Jest il faut lui indiquer qu’il faut transformer les fichiers .vue en utilisant vue-jest, cela se fait en ajoutant cette configuration dans le fichier package.json du projet :

{
 "jest": {
   "moduleFileExtensions": [
     "js",
     "json",
     // tell Jest to handle `*.vue` files
     "vue"
   ],
   "transform": {
     // process `*.vue` files with `vue-jest`
     ".*\\.(vue)$": "vue-jest"
   }
 }
}

Concepts

Il y a quelques concepts importants à connaitre pour la réalisation de tests, en voici quelques-uns :

Wrapper :

Un objet qui inclut plusieurs méthodes qui permettent d’interagir et de faire des tests sur le composant monté qu’il enveloppe. Il inclut généralement le texte affiché par le composant monté sous forme de DOM.

Certaines de ces méthodes sont :
attributes : Retourne la liste des attributs associés à l'élément.

classes : Retourne la liste des classes associées à l'élément.

emitted : Retourne les événements émis par l'élément.

find : Recherche un élément en fonction d'un sélecteur CSS ou d'une référence à un composant.

findAll : Retourne toutes les occurrences d'un sélecteur CSS ou d'une référence à un composant donné.

html : Retourne le HTML de l'élément sous forme de chaîne de caractères.

text : Retourne le contenu en texte de l’élément.

destroy : détruit le composant monté.

setData(donnée) : Définit les propriétés de données sur le composant.

Mounting

Envelopper un composant passé en paramètre dans un objet wrapper qui va donner la possibilité d'y effectuer plusieurs actions et méthodes pour des raisons de tests.

ShallowMounting

Similaire au mounting standard, cependant, lors de l’enveloppement du composant dans l’objet wrapper, il n’inclut pas les composants enfants. Ce qui permet de tester un composant sans avoir à penser à son contenu.

 

Voici quelques exemples de tests :

Test qui va vérifier l’existance d’une balise HTML

Vérification de si le composant contient la balise <p> le test va passer

test('verifier l’existance de la balise <p>', () => {
 const wrapper = shallowMount(example) expect(wrapper.html()).toContain('<p>')
})
 

Vérification de si la valeur de texte dans le champ est égale a une chaine de caractère spécifique le test va passer

test('vérifier le contenu de la balise <input>', async () => {
 const wrapper = shallowMount(example) const name = wrapper.find('#nom')
 await name.setValue('valeur voulue')
 expect(name.element.value).toBe('valeur voulue')
})

 

Conclusion 

En conclusion, Vue Test Utils est un outil qui permet de simplifier la création de tests dans Vue.Js car il offre plusieurs fonctionnalités spécifiques. Son installation peut se faire avec Vue CLI ou manuellement. Les concepts importants à connaitre sont les wrappers qui fournissent des méthodes pour interagir avec les composants montés, le mounting qui est le fait d’envelopper un composant dans un objet wrapper et le shallowmounting qui est essentiellement la même chose, par contre on n’inclut pas les composants enfants.

 

Références

Nada RIFKI, « Testing Vue.js components with Vue Test Utils »,LogRocket, https://blog.logrocket.com/testing-vue-js-components-vue-test-utils/ (Page consultée le 22 mars)

Usman MOHYUDDIN, « Introduction to vue-test-utils »,Reflect, https://reflect.run/articles/introduction-to-vue-test-utils/ (Page consultée le 22 mars)

« Installation », Vue Test Utils, https://v1.test-utils.vuejs.org/fr/installation/#version-semantique (Page consultée le 22 mars)

Tom ÖSTERLUND, « Testing Vue Components: mount vs shallowMount »,Medium, https://blog.stackademic.com/testing-vue-components-mount-vs-shallowmount-53e130370b65 (Page consultée le 22 mars)

Étiquettes

Commentaires