Je me demande juste si mes mises à jour () enverront un rappel: Maintenant, regardons le test. Je nrsquoai même pas lrsquointention de lui envoyer de faux messages maintenant, juste un tableau de trois éléments et puis prétendre que mon rappel a été appelé trois fois:
La ligne clé ici est la ligne 4. Dans cette ligne, jrsquoa i utilisé jest pour créer une fonction appelée Callback. FN (). Par conséquent, je peux utiliser un rappel pour calculer le nombre de fois que je lrsquoappelle. mulation. Téléphone. Long Ceci vérifiera que ma fonction a été appelée le bon nombre de fois. Cela ne signifie pas que obtenez les bonnes données. Pour ce faire, nous pouvons utiliser une fonction utilitaire appelée jest avec. FN (): le premier obstacle majeur à lrsquoadoption de tests dans les bibliothèques de code héritées est que le Code peut ne pas être facile à tester. Lrsquoisolement peut ne pas être testé. Vous pouvez encore écrire des tests Dom en utilisant des cadres drsquoautomatisation de navigateur comme Cypress. Je suis toujours quelque chose. Vous pouvez également utiliser des outils comme la Bibliothèque de test Dom pour tester Dom.
Mais un simple remaniement peut isoler la logique opérationnelle du système drsquoévénements Dom. Voici un exemple de jquery utilisé pour associer un événement de clic, puis ajouter ou supprimer des classes en fonction drsquoune condition: Vous pouvez rendre tout ou partie du Dom, simuler le clic, puis vérifier que lrsquoélément Dom a la classe correcte. Crsquoest lent, et crsquoest la responsabilité de jquery de tester beaucoup de choses, pas votre code. Votre logique drsquoentreprise est votre entreprise, pas les associations jquery et les systèmes drsquoenvoi drsquoévénements. Le fragment de code que jrsquoai montré ci dessus fait beaucoup de choses, en violation du principe de la responsabilité individuelle. Divisons le en deux fonctions. La fonction accepte jquery comme dépendance, puis exécute la logique drsquoentreprise. Le rôle drsquoune autre fonction est de connecter la logique drsquoisolement encapsulée dans la première fonction au système drsquoévénements
Jquery.
Voyons maintenant comment tester cette fonctionnalité avec notre logique drsquoentreprise. Puisque nous passons jquery comme une dépendance de fonction, pouvez passer nrsquoimporte quelle fonction là Bas. Comme une blague. Comme nous ne testons pas lrsquoeffet de ces fonctions en ajoutant et en supprimant des classes des éléments Dom corrects, nous devons juste savoir que les fonctions sont appelées. La simulation de base que jrsquoai montrée précédemment nrsquoest pas suffisante pour ce test. Je dis ça pour deux raisons. Tout drsquoabord, il nrsquoa pas de constructeur, donc appeler le constructeur jquery (nous nrsquoavons pas vraiment testé) génère une erreur. Deuxièmement, nous devons être en mesure de compter les appels à différentes méthodes.
Les tests suivants ont résolu le premier problème, mais pas le deuxième: Cela se fera par un générateur approprié. Mais ce que nous savons, crsquoest que deux méthodes de cet objet sont appelées. Lequel? Nous ne savons pas, crsquoest important parce que dans nos tests, nous devons nous assurer qursquoil srsquoappelle removeclass, pas addclass. Crsquoest la logique drsquoentreprise que nous testons. La solution est de mettre ces méthodes dans leurs variables, et nous pouvons vérifier: Maintenant, Nous testons si la logique drsquoentreprise conduit à appeler les bonnes fonctions. Nous ne testons pas les effets, mais notre logique. Mission accomplie.
Quelle est la pertinence des activités? Je nrsquoai aucun lien avec les événements réels. Je mrsquoen fous. Pourquoi? Tout drsquoabord, jrsquoai de sérieux doutes que jrsquoy rencontrerai des problèmes. Srsquoil y en a, ce sera un gros problème avec les tests drsquoacceptation et drsquointégration qui fonctionnent sur des sites Web réels et simulent lrsquointeraction utilisateur. jquery ne fonctionne pas correctement, ces tests seront difficiles à échouer, ce qui me donne plus de confiance dans la liaison drsquoévénements que nrsquoimporte quel événement simulé que jrsquoai créé pour les tests. la logique de lrsquoentreprise est testée, ça ira.
Testez tout avec jest imp testez jquery ajax
Obtenez jquery. Ajax () a quelques raisons: il est intégré dans le navigateur, fonctionne de la même manière sur le serveur, et a une bibliothèque de simulation très utile. Jrsquoai écrit ici sur la façon drsquoécrire des tests drsquoUnit é pour lrsquoAPI Fetch. Dans jrsquoai beaucoup parlé du ridicule de jest. souhaitez en savoir plus sur jest mocks, je recommande cet article. Mon but de test JavaScript est drsquoutiliser plusieurs couches supplémentaires dont jrsquoai besoin sur jest. je devais juste le tester en plaisantant. Cela peut aller trop loin, reconstruire le Code ou écrire trop de simulations, qui doivent ensuite être modifiées pour correspondre aux changements dans le Code, éliminant ainsi la nécessité de tester. Il srsquoagit drsquoun point drsquoéquilibre difficile à trouver, très différent de lrsquoécriture drsquoun test PHP, dans lequel nrsquoavez qursquoà décrire lrsquoAPI de base de données ou lrsquoAPI rest ou les classes qui traitent de la logique drsquoentreprise, tant qursquoelles ne sont pas liées, pouvez effectuer des tests DrsquoUnit é indépendants et des tests drsquointégration couvrant la façon dont certaines classes se connectent. Lrsquointerface utilisateur de test (ce que nous traitons dans les applications qui nrsquoutilisent que JavaScript dans le navigateur) est plus complexe. Lrsquointerface utilisateur est lrsquoendroit où toutes les parties sont combinées, de sorte que les tests unitaires autonomes peuvent facilement limiter, plutôt que drsquoaccélérer, la vitesse du Code.
Tester jquery avec jest dans le développement WordPress