Composants LWC - Comment tester les méthodes de classe de composants isolément?
Est-il possible de tester les méthodes dans une classe qui s'étend LightningElement
(par exemple un composant LWC) de manière isolée?
En d'autres termes, je pense qu'il serait plus efficace de créer simplement une instance de la classe de composant en utilisant new MyComponent()
, puis de tester les méthodes d'instance. En d'autres termes, des tests unitaires JavaScript standard, plutôt que des tests de niveau DOM.
Ce n'est pas que je ne vois pas la valeur des tests au niveau DOM, mais beaucoup de logique dans les composants LWC n'est pas liée au DOM, et il est fastidieux de le tester via le DOM.
S'agit-il de placer une logique non DOM dans une classe qui est ensuite importée dans le composant?
Merci.
Réponses
Comme mentionné à la fin de l'article, votre meilleur pari serait d'extraire cette logique dans un fichier séparé et de l'importer dans votre composant ainsi que directement dans un test unitaire.
Un bon exemple de cela dans le projet lwc-recpies serait la bibliothèque hypothécaire.js qui a ses propres tests (aucun composant impliqué), et est importée dans le composant miscSharedJavascript pour utilisation. Les tests miscSharedJavascript peuvent alors choisir de simuler l'appel d'hypothèque s'ils le souhaitent.
Notez également qu'avec l'exemple ci-dessus, la logique extraite du composant n'a pas besoin d'être dans un dossier séparé et peut être un fichier Javascript local dans le bundle de composants.
Dans un LWC particulièrement lourd, j'ai extrait la logique non DOM dans un helper.js
fichier séparé dans le paquet de composants, que j'ai testé directement avec Jest.
Cette réponse StackExchange décrit où j'ai placé le fichier et comment je l'ai plié dans la classe de composant principal.