Simulation d’autres composants
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- DĂ©crire les stubs fournis par le package sfdx-lwc-jest
- Comprendre comment remplacer la configuration Jest
- Tester les composants en dehors de votre environnement de développement
- Créer des stubs pour les composants externes
Création de composants de base fictifs
Le package sfdx-lwc-jest nous permet d’exĂ©cuter Jest dans les composants Web Lightning. Il met en place toutes les configurations Jest nĂ©cessaires pour exĂ©cuter des tests sans aucune modification supplĂ©mentaire. Nous l’avons beaucoup utilisĂ© dans les modules prĂ©cĂ©dents. Ce package comprend un ensemble de stubs (programmes qui simulent les composants dont dĂ©pend un module faisant l’objet de tests) pour tous les composants de l’espace de noms Lightning, y compris tous les composants de base Lightning. Cela nous permet d’exĂ©cuter les tests dans notre environnement sans Ăªtre dans un environnement Lightning. Les stubs sont installĂ©s dans le rĂ©pertoire src/lightning-stubs
du répertoire node-modules/@salesforce/sfdx-lwc-jest
.
Il peut arriver que vous deviez remplacer les stubs fournis par défaut. Pour ce faire, il est nécessaire de remplacer les configurations Jest, puis de créer des stubs personnalisés. Passons en revue les étapes à suivre pour lightning-button.
Commencez par configurer les répertoires pour les stubs personnalisés dans Visual Studio Code.
- Cliquez avec le bouton droit de la souris sur le répertoire
force-app
et sélectionnez Nouveau dossier. - Saisissez
test
pour nommer le nouveau répertoire. - Cliquez avec le bouton droit de la souris sur le nouveau répertoire
test
et sélectionnez Nouveau dossier. - Saisissez
jest-mocks
pour nommer le nouveau répertoire. - Cliquez avec le bouton droit de la souris sur le nouveau répertoire
jest-mocks
et sélectionnez Nouveau dossier. - Saisissez
lightning
pour nommer le nouveau répertoire.
Il s’agit de la racine des stubs pour les composants de base Lightning.
Ensuite, remplacez la configuration Jest en mettant à jour le fichier nommé jest.config.js
situé à la racine de votre projet Salesforce DX.
- Ouvrez le fichier
jest.config.js
. - Saisissez le bloc de code suivant après la ligne
…jestConfig
:PrĂªtez attention Ă l’élĂ©ment
moduleNameMapper
. Cet Ă©lĂ©ment indique Ă Jest oĂ¹ trouver le stub delightning-button
. Le premier tiret est converti en une barre oblique et le reste du nom passe d’une convention oĂ¹ les mots sont sĂ©parĂ©s par des tirets Ă une casse mixte. Une barre oblique est utilisĂ©e, car le rĂ©solveur de module traite tout ce qui se trouve avant le premier tiret comme l’espace de noms. Ici,<rootDir>
correspond à la racine de l’espace de travail Salesforce DX.Votre fichier doit se présenter comme suit :
- Enregistrez le fichier.
Ajoutons maintenant le stub button
au répertoire lightning
que nous venons de créer.
- Cliquez avec le bouton droit de la souris sur le répertoire
lightning
que nous avons créé au cours des dernières étapes et sélectionnez Nouveau fichier. - Saisissez
button.html
pour nommer le nouveau fichier. - Saisissez le bloc de code suivant dans le nouveau fichier :
- Enregistrez le fichier.
- Cliquez avec le bouton droit de la souris sur le répertoire
lightning
et sélectionnez Nouveau fichier. - Saisissez
button.js
pour nommer le nouveau fichier. - Saisissez le bloc de code suivant dans le nouveau fichier :
- Enregistrez le fichier.
Ces deux fichiers sont des copies des fichiers lightning-button du dossier lightning-stubs. Ils permettent de remplacer l’élément lightning-button de base pour les tests Jest si nécessaire.
Nous pouvons maintenant remplacer les stubs par défaut fournis par sfdx-lwc-jest. Qu’en est-il des composants issus d’autres espaces de noms ? Nous pouvons traiter ces cas avec quelques ajustements seulement. Abordons-les maintenant.
Création d’autres composants fictifs
Commençons par créer des composants fictifs avec un espace de noms différent. Pour ce faire, vous devez configurer un composant Web Lightning avec un test Jest qui échoue. Nous simulerons ensuite un correctif.
- Créez un composant Web Lightning dans Visual Studio Code.
- DĂ©finissez le nom sur
otherComponents
.
Ajoutons maintenant un composant avec un espace de noms différent au LWC.
- Ouvrez le fichier
otherComponents.html
et ajoutez le code suivant entre les balises « template » : - Enregistrez le fichier et exécutez le test.
- Le test Ă©choue pour une nouvelle raison :
puisque le composant <thunder-hammer-button>
provient d’un autre espace de noms, et non du répertoire lwc
local, vous devez créer un stub et mettre à jour la configuration Jest pour mapper le nom de ces composants au fichier fictif.
Vous devez d’abord ajouter un répertoire Thunder pour représenter l’espace de noms. Vous ajoutez ensuite les fichiers pour le remplacer.
- Cliquez avec le bouton droit de la souris sur le répertoire
jest-mocks
dans le répertoireforce-app/test/
et sélectionnez Nouveau dossier. - Saisissez
thunder
pour nommer le nouveau répertoire. - Cliquez avec le bouton droit de la souris sur le répertoire
thunder
et sélectionnez Nouveau fichier. - Saisissez
hammerButton.html
pour nommer le nouveau fichier. - Saisissez le bloc de code suivant dans le nouveau fichier :
- Enregistrez le fichier.
- Cliquez avec le bouton droit de la souris sur le nouveau répertoire
thunder
et sélectionnez Nouveau fichier. - Saisissez
hammerButton.js
pour nommer le nouveau fichier. - Saisissez le bloc de code suivant dans le nouveau fichier :
- Enregistrez le fichier et exécutez le test.
- Le test Ă©choue. Nous devons mettre Ă jour le fichier de configuration Jest.
- Ouvrez
jest.config.js
et ajoutez cette ligne juste en dessous de la lignemoduleNameMapper: {
: - Enregistrez le fichier et exécutez le test.
- Impeccable ! Le test réussit.
Il arrive que le LWC avec lequel vous travaillez importe un autre LWC qui ne se trouve pas dans le répertoire LWC local de votre projet Salesforce DX, Sans stub, ils feront échouer Jest. Testons ce cas.
- Ouvrez le fichier
otherComponents.html
et ajoutez le code suivant après la première balise « template » : - Enregistrez le fichier et exécutez le test.
- Le test Ă©choue, car il ne trouve pas le composant.
Vous pouvez résoudre ce problème à l’aide d’un stub. Vous devez commencer par créer le stub, puis mettre à jour la configuration Jest.
- Cliquez avec le bouton droit de la souris sur le répertoire
jest-mocks
dans le répertoireforce-app/test/
et sélectionnez Nouveau dossier. - Saisissez
c
pour nommer le nouveau répertoire. - Cliquez avec le bouton droit de la souris sur le répertoire
c
et sélectionnez Nouveau fichier. - Saisissez
displayPanel.html
pour nommer le nouveau fichier. - Saisissez le bloc de code suivant dans le nouveau fichier :
- Enregistrez le fichier.
- Cliquez avec le bouton droit de la souris sur le nouveau répertoire
c
et sélectionnez Nouveau fichier. - Saisissez
displayPanel.js
pour nommer le nouveau fichier. - Saisissez le bloc de code suivant dans le nouveau fichier : Notez qu’il existe un décorateur d’API pour chaque paramètre transmis à l’appel de composant.
- Enregistrez le fichier.
- Ouvrez
jest.config.js
et ajoutez cette ligne juste en dessous de la lignemoduleNameMapper: {
: - Enregistrez le fichier et exécutez le test.
- Le test réussit.
Bravo ! Vous Ăªtes maintenant prĂªt Ă Ă©crire des tests pour tous vos composants Web Lightning. Vous Ăªtes Ă©galement capable de rĂ©aliser des implĂ©mentations de stubs aussi sophistiquĂ©es ou simples que vous le souhaitez.