jasmine framework tutorial including jasmine jquery with examples
Cet article couvre le cadre de test Jasmine et ses constructions. Découvrez également le package Jasmine-Jquery qui étend Jasmine pour tester les applications Jquery:
Nous avons tout appris sur Karma dans notre précédent tutoriel de cette série.
Dans ce didacticiel, nous allons apprendre à utiliser Jasmine pour écrire des tests pour une application Web JavaScript et également à utiliser le package basé sur les nœuds Jasmine-Jquery pour tester l'application Web Jquery.
Ici, nous nous concentrerons principalement sur les constructions de base de Jasmine pour l'écriture de tests.
oracle pl sql entretien questions et réponses pour pdf expérimenté
Commençons!!
Ce que vous apprendrez:
Que sont les cadres de test?
Les cadres de test sont des suites de programmes ou de packages qui facilitent le test d'un autre programme pour garantir sa qualité. Chaque plate-forme de programmation a son propre cadre de test, comme vous devez l'avoir appris de notre précédent tutoriel.
Il existe différents ensembles de tests qui peuvent être effectués sur n'importe quel système logiciel. Exemples de tels tests comprennent les tests unitaires, les tests de bout en bout (e2e), etc. ici pour plus de détails.
Exemples des frameworks de test pour les applications JavaScript incluent Mocha, Jasmine, stagiaire, jest, Qunit, etc.
Introduction à Jasmine Framework
Il existe différentes approches de développement disponibles dans le scénario actuel. Parmi celles-ci, deux des approches de développement les plus populaires incluent le développement piloté par les tests (TDD) et le développement piloté par le comportement (BDD).
Le développement piloté par les tests est une approche de développement dans laquelle nous écrivons d'abord les tests, puis les exécutons. Chaque test échoue à sa toute première exécution car les fonctions qu'il utilise n'ont pas encore été écrites.
Nous écrivons ensuite les fonctions et réexécutons les tests. Ici, certains des tests échouent et les autres réussissent. Nous continuons à refactoriser le code pour que tous les tests réussissent.
Le développement axé sur le comportement suit également la même approche. La seule différence est que BDD est écrit pour satisfaire les propriétaires du logiciel (orienté client / métier), c'est-à-dire pour répondre aux fonctionnalités du logiciel avec les exigences métier ou le comportement attendu.
Tandis que TDD est écrit pour satisfaire les développeurs du logiciel afin qu'il puisse être assuré que les fonctions logicielles utilisées dans la construction des fonctionnalités produisent des résultats précis, stables et fiables.
Voir ici pour en savoir plus sur TDD vs BDD.
Jasmine est un framework de test JavaScript axé sur le comportement, ce qui facilite l'écriture des tests et ne dépend d'aucun autre framework.
Il existe deux façons d'utiliser Jasmine pour écrire vos tests. Une façon consiste à utiliser la version autonome fournie avec specRunner.html (qui affiche les résultats des tests dans un navigateur). L'autre façon est d'installer simplement Jasmine, d'écrire vos tests et de l'exécuter avec un testeur comme Karma pour afficher les résultats dans la fenêtre de la console.
Nous examinerions les deux façons d'utiliser Jasmine dans notre prochain tutoriel.
Constructions de base Jasmine pour l'écriture de tests
Vous trouverez ci-dessous les différentes constructions de Jasmine pour l'écriture de tests.
Voyons voir!!
# 1) décrit: Cette construction est utilisée pour écrire une suite de tests. Une suite de tests est une collection de plusieurs tests. «Décrire» est une fonction en soi qui prend deux paramètres: Le nom de la suite et une fonction .
Le paramètre function contient une collection de tests regroupés sous la suite de tests.
# 2) il: Cette construction est utilisée pour écrire une spécification de test. Une spécification de test est un ensemble de constructions qui testent une attente particulière ou la plus infime pour un système.
Comme describe construct, il prend également deux paramètres: Le nom du test et la fonction qui contient les assertions évaluant si l'attente est satisfaite ou non.
# 3) Attendez : Cette construction aide à tester si les attentes du système logiciel sont satisfaites ou non.
processus de gestion des défauts dans les tests logiciels
Il prend un paramètre appelé le réel (qui est le résultat renvoyé par le système logiciel), puis il est enchaîné avec une autre construction appelée matcher (résultat attendu).
# 4) Matchs : Il s'agit d'une collection de constructions auxquelles la construction expect est enchaînée. Il détermine si l'attente est satisfaite ou non.
Ces constructions prennent la valeur attendue du test le plus proche en cours d'exécution et la comparent à la valeur réelle obtenue lors de l'exécution du test. Cliquez sur ici pour une liste complète des constructions Jasmine matcher
# 5) avant chaque : Ceci est une construction globale, fournie par Jasmine pour vous aider à garder vos tests SEC (ne vous répétez pas). Cette construction est normalement utilisée dans le paramètre de fonction de la construction describe.
Tout code à l'intérieur s'exécute une fois avant l'exécution des spécifications sous les suites. Par conséquent, tout code que vous souhaitez exécuter en premier avant toutes les spécifications de la suite doit être placé ici.
# 6) après chaque: Cette construction est la même que beforeEach, et la différence est que le code qu'elle contient est exécuté après chaque code une fois que la construction describe est exécutée.
# 7) ceci : Cette construction est un objet vide qui peut être utilisé pour partager des valeurs entre les constructions «beforeEach», «afterEach» et «it» dans toutes les suites de tests. Chaque suite de tests a son propre objet et l'objet est remis à vide avant que les suites de tests ne soient exécutées.
# 8) xdescribe : Cette construction est utilisée pour désactiver les suites logicielles. Il indique simplement au testeur de sauter la suite de tests et, par conséquent, son résultat n'est pas affiché et pris en compte.
# 9) Hit : Cette construction est utilisée pour indiquer une spécification dans une suite comme une spécification en attente. Une spécification en attente est une spécification qui ne s'exécutera pas mais dont les noms seront affichés dans le résultat du test comme étant en attente.
De plus, si dans une spécification la fonction en attente est appelée, la spécification est marquée comme une spécification en attente. Toute spécification déclarée sans corps de fonction est également marquée comme étant en attente.
# 10) espion : Cette construction est utilisée pour créer un espion Jasmine. Les espions sont moqueurs. Les faux sont de faux objets créés pour représenter ou imiter l'objet réel. Les simulacres sont nécessaires pour éviter les frais généraux liés à la création de l'objet réel qu'ils représentent.
L'essence du test unitaire d'un code est de voir comment une fonction se comporte dans plusieurs conditions indépendantes des autres unités connectées ou y seront connectées.
Ainsi, nous effectuons des tests unitaires frontaux pour voir comment une unité du front-end de notre produit logiciel se comportera indépendamment des autres unités frontales qui seront connectées ou qui lui seront connectées.
Au cours de ce test, nous appelons divers arguments et fonctions qui peuvent dépendre d'autres fonctions et objets tels que les connexions réseau, les sources de données et les fichiers.
Pour répondre à ces dépendances (afin que nous puissions effectuer des tests unitaires frontaux), il est nécessaire de rendre les ressources requises disponibles. Par conséquent, nous adoptons des simulations pour imiter les objets du monde réel et éviter les frais généraux liés à leur création.
Notez qu'à un niveau simple, spyOn est utilisé pour tester si une fonction dépendante est réellement appelée, et cette fonction dépendante peut être simplement une fonction simple définie sur l'objet que nous espionnons.
La fonction spyOn prend deux paramètres: l'objet espionné et la fonction de dépendance qu'il contient qui est vérifiée pour s'assurer que notre fonction l'appelle.
Les espions existent dans la suite ou la spécification dans laquelle il est défini. Une fois la suite ou la spécification exécutée, l'espion cesse d'exister.
# 11) createSpy: Cette construction a le même objectif que spyOn, mais la différence est que cette fonction permet de remplacer la fonction dépendante par une fausse à des fins de test.
Pourquoi dois-je faire ça? Ceci est utile lorsque la dépendance d'origine dépend également des autres ressources qui ne sont pas disponibles dans le contexte du test.
Cette fonction est accessible à l'aide de l'objet Jasmine avec un point, c'est-à-dire Jasmine.createSpy (paramètres). Il ne prend qu'un seul paramètre, qui est une chaîne représentant le nom de la dépendance pour laquelle nous créons la maquette.
Notez qu'après avoir créé un espion, l'espion au premier appel retourne indéfini, car le premier appel est supposé être son entraînement. Ensuite, après les appels suivants, la fonction renvoie la valeur réelle. Voir plus de détails comme nous l'explorons ci-dessous.
Fonction de double fonction de test de jasmin
Les constructions spyOn et createSpy permettent la création de mocks (pour les dépendances). Ce n'est rien d'autre que de tester deux fonctions en un seul test, d'où la déclaration «test double fonction».
L’autre mot qui peut être utilisé pour désigner les simulacres est «talons».
Matchers d'espionnage: Il existe plusieurs correspondants qui répondent au besoin d'interagir avec les espions. Ils incluent: 'ToHaveBeenCalled' et 'toHaveBeenCalledWith' .
-
- toHaveBeenCalled : Ceci est utilisé dans une spécification pour déterminer que la dépendance espionnée a été appelée.
- toHaveBeenCalledWith : Ceci est utilisé dans une spécification pour déterminer que la dépendance espionnée a été appelée avec un certain ensemble de paramètres.
Visite ici pour un aperçu détaillé de toutes les constructions Jasmine.
différents types de tests en qa
Deux façons d'utiliser le jasmin
Il existe deux façons d'écrire des tests Jasmine. L'une consiste à utiliser Jasmine en tant que distribution autonome via specRunner et l'autre à utiliser Jasmine avec test runner.
Examinons d'abord l'exécution des tests Jasmine via le specRunner.
Comment utiliser Jasmine Standalone Distribution?
Cliquez sur ici , puis téléchargez la distribution autonome en cliquant sur Jasmine-autonome .
Décompressez le fichier dans le dossier du projet. Vous découvrirez qu'il ajoute ces répertoires au répertoire du projet: lib, src et spec; et ajoute également ces fichiers: specRunner.html et MIT.LICENSE.
Le répertoire lib contient la bibliothèque Jasmine qui exécute les tests contenus dans les fichiers de test ajoutés au fichier specRunner.html. Le fichier specRunner.html vous permet d'exécuter le test et d'afficher le résultat sur le navigateur dans un format de page Web plutôt que dans la fenêtre de la console.
Le répertoire src contient les codes sources frontaux et le répertoire spec contient les fichiers de test écrits à l'aide des suites de tests Jasmine. Par défaut, vous pouvez voir des suites de tests et des fichiers dans les répertoires mais nous n'allons pas les utiliser, nous écririons nos propres tests dans nos tutoriels suivants.
Utiliser Jasmine avec un testeur
C'est la deuxième façon d'utiliser Jasmine, où vous configurez un testeur comme Karma et le nourrissez avec votre fichier source et le fichier de spécification de test pour exécuter les tests.
Ensuite, vous pouvez soit afficher les résultats et générer des rapports à l'aide d'Istanbul, soit publier les résultats des tests sur coveralls.io.
Introduction à Jasmine-Jquery
Jasmine-Jquery est un package de nœuds qui facilite le test des codes frontaux construits avec jquery. D'une certaine manière, il étend le framework Jasmine pour qu'il soit bien adapté aux tests frontaux de Jquery.
Les extensions qu'il ajoute au framework Jasmine incluent:
- Un ensemble de correspondants personnalisés pour le framework Jquery, tels que toBeChecked, toBeDisabled, toBeEmpty, etc.
- Une API pour gérer les fixtures HTML, CSS et JSON dans nos spécifications.
Maintenant, la question est 'qu'est-ce qu'une API?' Une API (interface de programmation d'application) est une interface qui vous donne accès à certaines fonctions qui peuvent prendre du temps et des ressources pour que vous puissiez les construire à partir de zéro.
Une autre question est de savoir quels sont les luminaires? Les fixtures sont des états prédéfinis d'un objet que nous créons généralement lors de l'écriture de tests afin d'établir une ligne de base (un environnement bien connu et fixe) contre laquelle les tests sont exécutés afin de rendre les résultats répétables.
Voir ici pour plus de détails sur les correspondants personnalisés et les API.
Conclusion
Dans ce didacticiel, nous avons essayé de comprendre ce qu'est un framework de test et nous avons présenté Jasmine en tant que framework de test JavaScript. Nous avons examiné différentes constructions de Jasmine pouvant être utilisées pour écrire des spécifications de test et nous avons finalement présenté Jasmine-Jquery, un package basé sur des nœuds qui étend Jasmine pour pouvoir tester les applications Jquery.
À emporter
- Un cadre de test est une suite de programmes ou de packages qui facilitent le test du logiciel pour garantir la qualité du logiciel développé.
- Jasmine est un outil de développement axé sur le comportement qui fournit des constructions qui facilitent l'écriture de spécifications de test pour les applications JavaScript.
- Le développement piloté par les tests est une approche de développement dans laquelle nous écrivons d'abord les tests, puis les exécutons. Chaque test échoue à sa toute première exécution car la fonction qu'il utilise n'a pas encore été écrite. Nous écrivons ensuite les fonctions et réexécutons les tests. Ici, certains des tests échouent et d'autres réussissent. Ensuite, nous continuons à refactoriser le code jusqu'à ce que tous les tests réussissent.
- Une approche de développement axée sur le comportement est une approche de développement dans laquelle des tests sont écrits pour vérifier que les fonctionnalités du logiciel se comportent comme prévu par toutes les parties prenantes.
- Jasmine-Jquery est un package de nœuds qui facilite le test des codes frontaux construits avec Jquery.
Tutoriel suivant
Dans notre prochain didacticiel, nous explorerons les façons d'utiliser ces deux outils (Jasmine et Karma) pour écrire des spécifications de test pour un projet typique. Nous verrons également comment utiliser les autres outils tels que gulp, browserify, etc. qui sont nécessaires pour que nos tests soient opérationnels.
Tutoriel PREV | Tutoriel SUIVANT
lecture recommandée
- 8 Meilleurs outils de développement orienté comportement (BDD) et cadres de test
- Comment les testeurs sont impliqués dans les techniques TDD, BDD et ATDD
- TDD Vs BDD - Analysez les différences avec des exemples
- Framework BDD (Behavior Driven Development): un didacticiel complet
- Comment rédiger un document de stratégie de test (avec un exemple de modèle de stratégie de test)
- 10 meilleurs outils de test d'API en 2021 (outils de test d'API SOAP et REST)
- Tutoriel de test d'API: un guide complet pour les débutants
- Tutoriel Python DateTime avec des exemples