Maison >interface Web >js tutoriel >Ajout de plaisanterie à Explainer.js

Ajout de plaisanterie à Explainer.js

Susan Sarandon
Susan Sarandonoriginal
2024-11-10 09:02:02207parcourir

Cette semaine, nous étions censés ajouter test à notre outil cli. Jusqu’à présent, c’est la chose la plus frustrante à faire.

Pourquoi j'ai choisi Jest

Je suis un grand partisan du TDD (Test Driven Development). Presque chaque code pièce doit être testé. Pendant mon stage coopératif, j'ai passé plus de la moitié du temps à rédiger des tests pour mes relations publiques. Je crois que cette expérience m'a vraiment aidé à comprendre la nécessité des tests. J'ai été surpris de voir à quel point les frameworks de test de JS et Ruby sont similaires. J'ai utilisé Jest qui est très similaire à RSpec que j'ai utilisé lors de ma coopérative. Pour me moquer de la requête http, j'ai utilisé Nock un peu similaire à quelque chose appelé VCR.

Problèmes auxquels j'ai été confronté (beaucoup d'entre eux)

Le principal problème auquel j'ai été confronté était que j'utilisais ESM au lieu de CommonJS. Ce qui m’a rendu la vie encore plus difficile. Le premier problème était que jest.mock ne fonctionnait pas. Après quelques recherches, j'ai réalisé que la manière de se moquer est différente dans ESM. Malheureusement, même après avoir suivi la documentation, je n'ai pas pu le faire fonctionner. J'ai donc dû faire jest.spyOn. Le deuxième problème auquel j'ai été confronté était que execa exécute dans child_process le index.test.js, bien que son exécution n'affecte pas le rapport de couverture. J'ai donc dû utiliser jest.spyOn pour réécrire le test. J'ai également dû refactoriser index.js pour qu'il ne prenne pas les drapeaux que je passe en plaisantant. Un autre problème plus petit auquel j'ai été confronté était l'utilisation de node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js -c jest.config.mjs au lieu de jest -c jest.config.mjs parce que j'étais en utilisant l'ESM. J'ai également dû utiliser mock-fs pour répliquer le système de fichiers afin de tester FilepathResolver.test.js car le simple jest.spyOn ne l'a pas testé de manière suffisamment approfondie. J'ai été surpris du nombre d'obstacles causés par la simple utilisation d'ESM et cela reflète à quel point JS est un gâchis.

Après de nombreux essais, j'ai obtenu une assez bonne couverture.

Adding Jest To Explainer.js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Intercepteur Axios React JSArticle suivant:Intercepteur Axios React JS