jasmine framework tutorial including jasmine jquery with examples
Αυτό το άρθρο καλύπτει το πλαίσιο δοκιμής γιασεμιού και τις δομές του. Επίσης, Μάθετε για το πακέτο Jasmine-Jquery που επεκτείνει το Jasmine σε δοκιμές εφαρμογών Jquery:
Μάθαμε τα πάντα Κάρμα στο προηγούμενο σεμινάριό μας σε αυτήν τη σειρά.
Σε αυτό το σεμινάριο, θα μάθουμε πώς να χρησιμοποιούμε το Jasmine για να γράφουμε δοκιμές για μια εφαρμογή ιστού JavaScript και επίσης να μάθουμε πώς να χρησιμοποιούμε το πακέτο που βασίζεται σε κόμβο Jasmine-Jquery για να δοκιμάσουμε την εφαρμογή Ιστού Jquery.
Εδώ θα επικεντρωθούμε κυρίως στις βασικές κατασκευές Jasmine για γραπτές δοκιμές.
πώς να εντοπίζετε σφάλματα κατά τον αυτοματισμό κατασκευής
Ας αρχίσουμε!!
Τι θα μάθετε:
Τι είναι τα δοκιμαστικά πλαίσια;
Το Testing Frameworks είναι σουίτες προγραμμάτων ή πακέτων που διευκολύνουν τη δοκιμή ενός άλλου προγράμματος για τη διασφάλιση της ποιότητάς του. Κάθε πλατφόρμα προγραμματισμού έχει το δικό της πλαίσιο δοκιμών, όπως πρέπει να έχετε μάθει από το προηγούμενο σεμινάριό μας.
Υπάρχουν διαφορετικά σετ δοκιμών που μπορούν να πραγματοποιηθούν σε οποιοδήποτε σύστημα λογισμικού. Παραδείγματα τέτοιων δοκιμών περιλαμβάνουν δοκιμή μονάδας, δοκιμή από άκρο σε άκρο (e2e), κ.λπ. Έλεγχος εδώ Για περισσότερες πληροφορίες.
Παραδείγματα των πλαισίων δοκιμών για εφαρμογές JavaScript περιλαμβάνουν Mocha, Jasmine, intern, jest, Qunit κ.λπ.
Εισαγωγή στο πλαίσιο της Jasmine
Υπάρχουν διάφορες διαθέσιμες προσεγγίσεις ανάπτυξης στο σημερινό σενάριο. Από αυτές, δύο από τις πιο δημοφιλείς προσεγγίσεις ανάπτυξης περιλαμβάνουν το Test-Driven Development (TDD) και το Behavior Driven Development (BDD).
Το Test-Driven Development είναι μια αναπτυξιακή προσέγγιση όπου γράφουμε πρώτα τις δοκιμές και μετά τις διεξάγουμε. Κάθε δοκιμή αποτυγχάνει στην πρώτη του εκτέλεση, επειδή οι συναρτήσεις που χρησιμοποιεί δεν έχουν ακόμη γραφτεί.
Στη συνέχεια γράφουμε τις συναρτήσεις και εκτελέστε ξανά τις δοκιμές. Εδώ, μερικές από τις δοκιμές αποτυγχάνουν και οι άλλες περνούν. Συνεχίζουμε να επαναπροσδιορίζουμε τον κώδικα για να περάσουν όλες οι δοκιμές.
Η ανάπτυξη βάσει συμπεριφοράς ακολουθεί επίσης την ίδια προσέγγιση. Η μόνη διαφορά είναι ότι το BDD είναι γραμμένο για να ικανοποιεί τους κατόχους του λογισμικού (πελάτη / επιχειρηματικό προσανατολισμό), δηλαδή να ανταποκρίνεται στις δυνατότητες του λογισμικού με τις επιχειρηματικές απαιτήσεις ή την αναμενόμενη συμπεριφορά.
Ενώ το TDD είναι γραμμένο για να ικανοποιήσει τους προγραμματιστές του λογισμικού, έτσι ώστε να μπορεί να διασφαλιστεί ότι οι λειτουργίες λογισμικού που χρησιμοποιούνται για την κατασκευή των χαρακτηριστικών παράγουν ακριβή αποτελέσματα, σταθερά και αξιόπιστα.
Βλέπω εδώ για να μάθετε περισσότερα για το TDD εναντίον BDD.
Το Jasmine είναι ένα πλαίσιο δοκιμών JavaScript που βασίζεται στη συμπεριφορά, το οποίο διευκολύνει τις δοκιμές γραφής και δεν εξαρτάται από κανένα άλλο πλαίσιο.
Υπάρχουν δύο τρόποι για να χρησιμοποιήσετε το Jasmine για να γράψετε τις δοκιμές σας. Ένας τρόπος είναι να χρησιμοποιήσετε την αυτόνομη έκδοση που συνοδεύει το specRunner.html (η οποία εμφανίζει τα αποτελέσματα των δοκιμών σε ένα πρόγραμμα περιήγησης). Ο άλλος τρόπος είναι να εγκαταστήσετε απλά το Jasmine, να γράψετε τις δοκιμές σας και να το εκτελέσετε με έναν δοκιμαστικό δρομέα όπως ο Karma για να εμφανίσετε τα αποτελέσματα στο παράθυρο της κονσόλας.
Θα εξετάσουμε και τους δύο τρόπους χρήσης του Jasmine στο επερχόμενο σεμινάριό μας.
Βασικές κατασκευές γιασεμιού για γραφή δοκιμών
Παρακάτω αναφέρονται οι διάφορες κατασκευές της Jasmine για γραπτές δοκιμές.
Ας δούμε!!
# 1) περιγράφει: Αυτή η κατασκευή χρησιμοποιείται για τη σύνταξη δοκιμαστικής σουίτας. Μια δοκιμαστική σουίτα είναι μια συλλογή πολλαπλών δοκιμών. Η «περιγραφή» είναι μια συνάρτηση από μόνη της που παίρνει δύο παραμέτρους: Το όνομα της σουίτας και μια συνάρτηση .
Η παράμετρος συνάρτησης περιέχει μια συλλογή δοκιμών ομαδοποιημένων στην ομάδα δοκιμών.
# 2): Αυτό το κατασκεύασμα χρησιμοποιείται για να γράψει μια δοκιμαστική προδιαγραφή. Μια δοκιμαστική προδιαγραφή είναι ένα σύνολο κατασκευών που δοκιμάζουν μια συγκεκριμένη ή πιο λεπτή προσδοκία για ένα σύστημα.
καλύτερος ιστότοπος λήψης μουσικής για Android
Όπως περιγράφει την κατασκευή, παίρνει επίσης δύο παραμέτρους: Το όνομα του τεστ και η συνάρτηση που περιέχει τους ισχυρισμούς που αξιολογούν εάν η προσδοκία πληρούται ή όχι.
# 3) περιμένετε : Αυτή η κατασκευή βοηθά στη δοκιμή εάν πληρούνται οι προσδοκίες από το σύστημα λογισμικού ή όχι.
Παίρνει μια παράμετρο που ονομάζεται πραγματική (που είναι το αποτέλεσμα που επιστρέφει το σύστημα λογισμικού) και έπειτα συνδέεται με μια άλλη κατασκευή που ονομάζεται αντιστοιχία (αναμενόμενο αποτέλεσμα).
# 4) Αγώνες : Αυτή είναι μια συλλογή κατασκευών στις οποίες είναι συνδεδεμένη η αναμενόμενη κατασκευή. Καθορίζει εάν η προσδοκία εκπληρώνεται ή όχι.
Αυτές οι κατασκευές λαμβάνουν την αναμενόμενη τιμή του πλησιέστερου τεστ που πραγματοποιείται και ταιριάζουν με την πραγματική τιμή που λαμβάνεται κατά την εκτέλεση της δοκιμής. Κάντε κλικ εδώ για μια πλήρη λίστα κατασκευών αντιστοίχισης γιασεμιού
# 5) πριν από κάθε : Πρόκειται για ένα παγκόσμιο κατασκεύασμα, το οποίο παρέχεται από την Jasmine για να σας βοηθήσει να κρατήσετε τις δοκιμές σας στεγνές (μην επαναλάβετε τον εαυτό σας). Αυτό το κατασκεύασμα χρησιμοποιείται κανονικά στην παράμετρο συνάρτησης της περιγραφής κατασκευής.
Οποιοσδήποτε κωδικός στο εσωτερικό εκτελείται μία φορά πριν εκτελεστούν οι προδιαγραφές κάτω από τις σουίτες. Ως εκ τούτου, οποιοσδήποτε κωδικός που θέλετε να εκτελεστεί πρώτα πριν από όλες τις προδιαγραφές της σουίτας πρέπει να τοποθετηθούν εδώ.
# 6) μετάΚάθε: Αυτό το κατασκεύασμα είναι το ίδιο με πρινEach, και η διαφορά είναι ότι ο κώδικας που περιέχει εκτελείται μετά από κάθε κώδικα μόλις εκτελεστεί το build.
# 7) αυτό : Αυτή η κατασκευή είναι ένα κενό αντικείμενο που μπορεί να χρησιμοποιηθεί για την κοινή χρήση τιμών μεταξύ των «πριν από κάθε», «μετά από κάθε» και «δημιουργεί» σε οποιαδήποτε δοκιμαστική σουίτα. Κάθε δοκιμαστική σουίτα έχει το δικό της αντικείμενο και το αντικείμενο επαναφέρεται σε άδεια πριν από την εκτέλεση των δοκιμαστικών σουιτών.
# 8) περιγραφή : Αυτή η κατασκευή χρησιμοποιείται για να απενεργοποιήσετε τις σουίτες λογισμικού. Απλώς λέει στον δοκιμαστή να παραλείψει τη δοκιμαστική σουίτα και ως εκ τούτου, το αποτέλεσμα δεν εμφανίζεται και λαμβάνεται υπόψη.
# 9) χτύπησε : Αυτή η κατασκευή χρησιμοποιείται για να υποδείξει μια προδιαγραφή σε μια σουίτα ως εκκρεμή προδιαγραφή. Μια εκκρεμή προδιαγραφή είναι μια προδιαγραφή που δεν θα εκτελεστεί, αλλά τα ονόματά τους θα εμφανίζονται στο αποτέλεσμα της δοκιμής ως εκκρεμή.
Επίσης, εάν σε οποιαδήποτε προδιαγραφή καλείται η λειτουργία σε εκκρεμότητα, τότε η προδιαγραφή επισημαίνεται ως εκκρεμή προδιαγραφή. Κάθε προδιαγραφή που δηλώνεται χωρίς σώμα λειτουργίας επισημαίνεται επίσης ως εκκρεμότητα.
# 10) spyOn : Αυτή η κατασκευή χρησιμοποιείται για τη δημιουργία ενός κατάσκοπου γιασεμιού. Οι κατάσκοποι είναι χλευαστές. Τα χλεύη είναι ψεύτικα αντικείμενα που δημιουργήθηκαν για να αντιπροσωπεύουν ή να μιμούνται το πραγματικό αντικείμενο. Απαιτούνται χλεύη για να αποφευχθεί το γενικό κόστος δημιουργίας του πραγματικού αντικειμένου που αντιπροσωπεύουν.
Η ουσία της δοκιμής μονάδας ενός κώδικα είναι να δούμε πώς συμπεριφέρεται μια συνάρτηση υπό διάφορες συνθήκες ανεξάρτητες από τις άλλες συνδεδεμένες μονάδες ή θα συνδεθούν σε αυτήν.
Έτσι, πραγματοποιούμε δοκιμές μονάδας front-end για να δούμε πώς μια μονάδα του front-end του προϊόντος λογισμικού μας θα συμπεριφέρεται ανεξάρτητα από τις άλλες μονάδες front-end που θα είναι συνδεδεμένες ή συνδεδεμένες σε αυτό.
Κατά τη διάρκεια αυτής της δοκιμής, πραγματοποιούμε κλήσεις σε διάφορα ορίσματα και λειτουργίες που μπορεί να εξαρτώνται από άλλες λειτουργίες και αντικείμενα, όπως συνδέσεις δικτύου, πηγές δεδομένων και αρχεία.
Για να ανταποκριθούμε σε αυτές τις εξαρτήσεις (ώστε να μπορούμε να πραγματοποιήσουμε δοκιμές μονάδας front-end), υπάρχει ανάγκη να διαθέσουμε τους απαιτούμενους πόρους. Ως εκ τούτου, υιοθετούμε χλευασμούς για να μιμηθούμε τα πραγματικά αντικείμενα και να αποφύγουμε το γενικό κόστος της δημιουργίας τους.
Σημειώστε ότι σε ένα απλό επίπεδο, το spyOn χρησιμοποιείται για να ελέγξει εάν μια εξαρτημένη συνάρτηση καλείται πραγματικά, και αυτή η εξαρτημένη συνάρτηση μπορεί να είναι απλώς μια απλή συνάρτηση που ορίζεται στο αντικείμενο που κατασκοπεύουμε.
Η συνάρτηση spyOn παίρνει δύο παραμέτρους: το αντικείμενο που κατασκοπεύεται και τη συνάρτηση εξάρτησης που περιέχει, η οποία ελέγχεται για να βεβαιωθεί ότι η λειτουργία μας το καλεί.
Υπάρχουν κατάσκοποι στη σουίτα ή στην προδιαγραφή στην οποία ορίζεται. Μετά την εκτέλεση της σουίτας ή των προδιαγραφών, ο κατάσκοπος σταματά να υπάρχει.
# 11) createSpy: Αυτή η κατασκευή εξυπηρετεί τον ίδιο σκοπό με το spyOn, αλλά η διαφορά είναι ότι αυτή η λειτουργία καθιστά δυνατή την αντικατάσταση της εξαρτημένης λειτουργίας με μια ψεύτικη για δοκιμή.
Γιατί πρέπει να το κάνω αυτό; Αυτό είναι χρήσιμο όταν η αρχική εξάρτηση εξαρτάται επίσης από τους άλλους πόρους που δεν είναι διαθέσιμοι στο πλαίσιο του τεστ.
Αυτή η συνάρτηση έχει πρόσβαση χρησιμοποιώντας το αντικείμενο Jasmine με τελεία, δηλαδή Jasmine.createSpy (παράμετροι). Χρειάζεται μόνο μία παράμετρος, η οποία είναι μια συμβολοσειρά που αντιπροσωπεύει το όνομα της εξάρτησης για την οποία δημιουργούμε το mock.
Σημειώστε ότι μετά τη δημιουργία ενός κατάσκοπου, ο κατάσκοπος στην πρώτη κλήση επιστρέφει αόριστο, καθώς η πρώτη κλήση θεωρείται ότι είναι η εκπαίδευσή της. Στη συνέχεια, μετά από επακόλουθες κλήσεις, η συνάρτηση επιστρέφει την πραγματική τιμή. Δείτε περισσότερες λεπτομέρειες καθώς την εξερευνούμε παρακάτω.
Δυνατότητα διπλής λειτουργίας δοκιμής γιασεμιού
Οι κατασκευές spyOn και createSpy καθιστούν δυνατή τη δημιουργία χλευασμάτων (για εξάρτηση). Αυτό δεν είναι άλλο από το να δοκιμάσετε δύο συναρτήσεις σε μία δοκιμή, επομένως η δήλωση «δοκιμή διπλής λειτουργίας».
Η άλλη λέξη που μπορεί να χρησιμοποιηθεί για αναφορά σε χλευασμούς είναι «στέλεχος».
Spy Matchers: Υπάρχουν αρκετοί ταιριαστές που ικανοποιούν την ανάγκη αλληλεπίδρασης με κατασκόπους. Περιλαμβάνουν: «ToHaveBeenCalled» και «toHaveBeenCalledWith» .
-
- στοHaveBeenCalled : Αυτό χρησιμοποιείται σε μια προδιαγραφή για να προσδιορίσει ότι κλήθηκε η εξάρτηση που κατασκοπεύτηκε.
- στοHaveBeenCalledWith : Αυτό χρησιμοποιείται σε μια προδιαγραφή για να προσδιορίσει ότι η εξάρτηση που κατασκοπεύτηκε κλήθηκε με ένα ορισμένο σύνολο παραμέτρων.
Επίσκεψη εδώ για μια λεπτομερή περιγραφή όλων των κατασκευών της Jasmine.
ταξινόμηση φυσαλίδων σε c ++
Δύο τρόποι για να χρησιμοποιήσετε το γιασεμί
Υπάρχουν δύο τρόποι για να γράψετε τεστ Jasmine. Το ένα είναι να χρησιμοποιήσετε το Jasmine ως αυτόνομη διανομή μέσω specRunner και το άλλο να χρησιμοποιείτε το Jasmine με το test runner.
Ας ρίξουμε μια πρώτη ματιά στην εκτέλεση δοκιμών Jasmine μέσω του specRunner.
Πώς να χρησιμοποιήσετε την αυτόνομη διανομή γιασεμιού;
Κάντε κλικ εδώ και, στη συνέχεια, πραγματοποιήστε λήψη της αυτόνομης διανομής κάνοντας κλικ στο Γιασεμί-αυτόνομο .
Αποσυμπιέστε το αρχείο στο φάκελο έργου. Θα ανακαλύψετε ότι προσθέτει αυτούς τους καταλόγους στον κατάλογο έργων: lib, src και spec; και προσθέτει επίσης αυτά τα αρχεία: specRunner.html και MIT.LICENSE.
Ο κατάλογος lib περιέχει τη βιβλιοθήκη Jasmine που εκτελεί τις δοκιμές που περιέχονται στα δοκιμαστικά αρχεία που προστίθενται στο αρχείο specRunner.html. Το αρχείο specRunner.html σάς επιτρέπει να εκτελέσετε τη δοκιμή και να δείτε το αποτέλεσμα στο πρόγραμμα περιήγησης σε μορφή ιστοσελίδας και όχι στο παράθυρο της κονσόλας.
Ο κατάλογος src περιέχει τους πηγαίους κώδικες διεπαφής και ο κατάλογος προδιαγραφών περιέχει τα δοκιμαστικά αρχεία που γράφτηκαν χρησιμοποιώντας το Jasmine suites. Από προεπιλογή, μπορείτε να δείτε μερικές δοκιμαστικές σουίτες και αρχεία στους καταλόγους, αλλά δεν πρόκειται να τα χρησιμοποιήσουμε, θα γράψαμε τις δικές μας δοκιμές στα επόμενα σεμινάρια μας.
Χρήση της Jasmine με έναν δοκιμαστή
Αυτός είναι ο δεύτερος τρόπος χρήσης του Jasmine, όπου διαμορφώνετε έναν δοκιμαστικό δρομέα όπως το Karma και το τροφοδοτείτε με το αρχείο προέλευσης και το αρχείο δοκιμαστικών προδιαγραφών για την εκτέλεση των δοκιμών.
Στη συνέχεια, μπορείτε είτε να εμφανίσετε τα αποτελέσματα και να δημιουργήσετε αναφορές χρησιμοποιώντας την Κωνσταντινούπολη είτε να δημοσιεύσετε τα αποτελέσματα των δοκιμών στο coveralls.io.
Εισαγωγή στο Jasmine-Jquery
Το Jasmine-Jquery είναι ένα πακέτο κόμβων που βοηθά στη δοκιμή κωδικών front-end που έχουν κατασκευαστεί με jquery. Κατά κάποιο τρόπο, επεκτείνει το πλαίσιο της Jasmine ώστε να είναι κατάλληλο για τις δοκιμές front-end του Jquery.
Οι επεκτάσεις που προσθέτει στο πλαίσιο γιασεμιού περιλαμβάνουν:
- Ένα σύνολο προσαρμοσμένων αντιστοιχιών για το πλαίσιο Jquery, όπως toBeChecked, toBeDisabled, toBeEmpty κ.λπ.
- Ένα API για το χειρισμό εξαρτημάτων HTML, CSS και JSON στις προδιαγραφές μας.
Τώρα το ερώτημα είναι 'τι είναι ένα API;' Ένα API (διεπαφή προγραμματισμού εφαρμογών) είναι μια διεπαφή που σας παρέχει πρόσβαση σε ορισμένες λειτουργίες που ενδέχεται να απαιτούν χρόνο και πόρους για να δημιουργήσετε από το μηδέν.
Μια άλλη ερώτηση είναι τι είναι τα φωτιστικά; Τα φωτιστικά είναι προκαθορισμένες καταστάσεις ενός αντικειμένου που συνήθως δημιουργούμε κατά τη συγγραφή δοκιμών, έτσι ώστε να δημιουργηθεί μια γραμμή βάσης (ένα γνωστό και σταθερό περιβάλλον) στο οποίο εκτελούνται οι δοκιμές προκειμένου να καταστούν τα αποτελέσματα επαναλαμβανόμενα.
Βλέπω εδώ για περισσότερες λεπτομέρειες σχετικά με τις προσαρμοσμένες αντιστοιχίσεις και τα API.
συμπέρασμα
Σε αυτό το σεμινάριο, προσπαθήσαμε να καταλάβουμε τι είναι ένα πλαίσιο δοκιμών και παρουσιάσαμε το Jasmine ως πλαίσιο δοκιμών JavaScript. Εξετάσαμε διάφορες κατασκευές της Jasmine που μπορούν να χρησιμοποιηθούν για τη σύνταξη δοκιμαστικών προδιαγραφών και τελικά παρουσιάσαμε το Jasmine-Jquery που είναι ένα πακέτο βασισμένο σε κόμβους που επεκτείνει την Jasmine ώστε να μπορεί να δοκιμάζει εφαρμογές Jquery.
Διακοπές
- Ένα πλαίσιο δοκιμών είναι μια σειρά προγραμμάτων ή πακέτων που διευκολύνουν τη δοκιμή του λογισμικού για τη διασφάλιση της ποιότητας του ανεπτυγμένου λογισμικού.
- Το Jasmine είναι ένα εργαλείο ανάπτυξης που βασίζεται στη συμπεριφορά και παρέχει κατασκευές που διευκολύνουν τη σύνταξη δοκιμαστικών προδιαγραφών για εφαρμογές JavaScript.
- Το Test-Driven Development είναι μια αναπτυξιακή προσέγγιση όπου γράφουμε πρώτα τις δοκιμές και μετά τις διεξάγουμε. Κάθε δοκιμή αποτυγχάνει στην πρώτη της εκτέλεση επειδή η συνάρτηση που χρησιμοποιεί δεν έχει ακόμη γραφτεί. Στη συνέχεια γράφουμε τις συναρτήσεις και εκτελούμε ξανά τις δοκιμές. Εδώ, μερικές από τις δοκιμές αποτυγχάνουν και άλλες περνούν. Στη συνέχεια, συνεχίζουμε να επαναπροσδιορίζουμε τον κωδικό μέχρι να περάσουν όλες οι δοκιμές.
- Μια προσέγγιση ανάπτυξης βάσει συμπεριφοράς είναι μια αναπτυξιακή προσέγγιση στην οποία γράφονται δοκιμές για να εξακριβωθεί ότι τα χαρακτηριστικά του λογισμικού συμπεριφέρονται όπως αναμένεται από όλα τα ενδιαφερόμενα μέρη.
- Το Jasmine-Jquery είναι ένα πακέτο κόμβων που βοηθά στη δοκιμή κωδικών front-end που έχουν δημιουργηθεί με το Jquery.
Επόμενο σεμινάριο
Στο επερχόμενο σεμινάριό μας, θα διερευνήσουμε τους τρόπους χρήσης αυτών των δύο εργαλείων (Jasmine και Karma) για τη σύνταξη δοκιμαστικών προδιαγραφών για ένα τυπικό έργο. Θα δούμε επίσης πώς να χρησιμοποιούμε τα άλλα εργαλεία, όπως gulp, browserify κ.λπ. που απαιτούνται για να τεθούν σε λειτουργία οι δοκιμές μας.
Εκπαιδευτικό πρόγραμμα PREV | ΕΠΟΜΕΝΟ Φροντιστήριο
Συνιστώμενη ανάγνωση
- 8 Εργαλεία και Πλαίσια Δοκιμών Βέλτιστης Ανάπτυξης βάσει Συμπεριφοράς (BDD)
- Πώς εμπλέκονται οι υπεύθυνοι δοκιμών στις τεχνικές TDD, BDD & ATDD
- TDD Vs BDD - Αναλύστε τις διαφορές με παραδείγματα
- Πλαίσιο BDD (Ανάπτυξη βάσει συμπεριφοράς): Ένα πλήρες σεμινάριο
- Τρόπος σύνταξης εγγράφου στρατηγικής δοκιμής (με δείγμα προτύπου στρατηγικής δοκιμής)
- 10 καλύτερα εργαλεία δοκιμών API το 2021 (SOAP και REST API Testing Tools)
- Οδηγός δοκιμών API: Ένας πλήρης οδηγός για αρχάριους
- Εκμάθηση Python DateTime με παραδείγματα