jasmine framework tutorial including jasmine jquery with examples
Dieser Artikel behandelt das Jasmin-Test-Framework und seine Konstrukte. Erfahren Sie auch mehr über das Jasmine-Jquery-Paket, mit dem Jasmine zum Testen von Jquery-Anwendungen erweitert wird:
Wir haben alles darüber gelernt Karma in unserem vorherigen Tutorial in dieser Reihe.
In diesem Tutorial erfahren Sie, wie Sie mit Jasmine Tests für eine JavaScript-Webanwendung schreiben und wie Sie mit dem knotenbasierten Paket Jasmine-Jquery die Jquery-Webanwendung testen.
Hier konzentrieren wir uns hauptsächlich auf die grundlegenden Jasmin-Konstrukte zum Schreiben von Tests.
wie man swf mit dem Adobe Flash Player öffnet
Lasst uns beginnen!!
Was du lernen wirst:
Was sind Test-Frameworks?
Testing Frameworks sind Suiten von Programmen oder Paketen, die das Testen eines anderen Programms erleichtern, um dessen Qualität sicherzustellen. Jede Programmierplattform verfügt über ein eigenes Testframework, wie Sie aus unserem vorherigen Tutorial gelernt haben müssen.
Es gibt verschiedene Testreihen, die auf jedem Softwaresystem durchgeführt werden können. Beispiele Zu diesen Tests gehören Unit-Tests, End-to-End-Tests (e2e) usw. Hier für mehr Details.
Beispiele Zu den Test-Frameworks für JavaScript-Anwendungen gehören Mocha, Jasmine, Intern, Jest, Qunit usw.
Einführung in Jasmine Framework
Im heutigen Szenario stehen verschiedene Entwicklungsansätze zur Verfügung. Von diesen sind zwei der beliebtesten Entwicklungsansätze Test-Driven Development (TDD) und Behavior Driven Development (BDD).
Testgetriebene Entwicklung ist ein Entwicklungsansatz, bei dem wir die Tests zuerst schreiben und dann ausführen. Jeder Test schlägt bei seiner ersten Ausführung fehl, da die von ihm verwendeten Funktionen noch nicht geschrieben wurden.
Wir schreiben dann die Funktionen und führen die Tests erneut aus. Hier schlagen einige der Tests fehl und die anderen bestehen. Wir überarbeiten den Code ständig, damit alle Tests bestanden werden.
Behavioral Driven Development folgt ebenfalls dem gleichen Ansatz. Der einzige Unterschied besteht darin, dass BDD geschrieben wurde, um Eigentümer der Software (kunden- / geschäftsorientiert) zufrieden zu stellen, d. H. Um die Softwarefunktionen mit den Geschäftsanforderungen oder dem erwarteten Verhalten zu erfüllen.
Während TDD geschrieben wurde, um die Entwickler der Software zufrieden zu stellen, kann sichergestellt werden, dass die Softwarefunktionen, die beim Erstellen der Funktionen verwendet werden, genaue Ergebnisse liefern, stabil und zuverlässig sind.
Sehen Hier um mehr über TDD vs BDD zu erfahren.
Jasmine ist ein verhaltensgesteuertes JavaScript-Testframework, das das Schreiben von Tests vereinfacht und von keinem anderen Framework abhängig ist.
Es gibt zwei Möglichkeiten, Jasmine zum Schreiben Ihrer Tests zu verwenden. Eine Möglichkeit besteht darin, die eigenständige Version zu verwenden, die mit specRunner.html geliefert wird (die Testergebnisse in einem Browser anzeigt). Die andere Möglichkeit besteht darin, Jasmine einfach zu installieren, Ihre Tests zu schreiben und mit einem Testläufer wie Karma auszuführen, damit die Ergebnisse im Konsolenfenster angezeigt werden.
In unserem nächsten Tutorial werden wir uns beide Möglichkeiten der Verwendung von Jasmine ansehen.
Grundlegende Jasminkonstrukte zum Schreiben von Tests
Nachfolgend sind die verschiedenen Konstrukte von Jasmine zum Schreiben von Tests aufgeführt.
Mal sehen!!
# 1) beschreibt: Dieses Konstrukt wird zum Schreiben einer Testsuite verwendet. Eine Testsuite ist eine Sammlung mehrerer Tests. 'Beschreiben' ist eine Funktion an sich, die zwei Parameter akzeptiert: Der Name der Suite und eine Funktion .
Der Funktionsparameter enthält eine Sammlung von Tests, die unter der Testsuite zusammengefasst sind.
# 2) es: Dieses Konstrukt wird verwendet, um eine Testspezifikation zu schreiben. Eine Testspezifikation ist eine Reihe von Konstrukten, die eine bestimmte oder kleinste Erwartung für ein System testen.
die beste Spyware für Handys
Wie das Beschreibungskonstrukt werden auch zwei Parameter benötigt: Der Name des Tests und die Funktion, die die Aussagen enthält, die bewerten, ob die Erwartung erfüllt ist oder nicht.
# 3) erwarten : Dieses Konstrukt hilft beim Testen, ob die Erwartungen an das Softwaresystem erfüllt sind oder nicht.
Es wird ein Parameter namens 'actual' (das Ergebnis, das das Softwaresystem zurückgibt) verwendet und dann mit einem anderen Konstrukt verkettet, das als 'Matcher' bezeichnet wird (erwartetes Ergebnis).
# 4) Übereinstimmungen : Dies ist eine Sammlung von Konstrukten, an die das Expect-Konstrukt verkettet ist. Es bestimmt, ob die Erwartung erfüllt ist oder nicht.
Diese Konstrukte nehmen den erwarteten Wert des nächsten durchgeführten Tests und vergleichen ihn mit dem tatsächlichen Wert, der bei der Ausführung des Tests erhalten wird. Klicken Hier für eine vollständige Liste der Jasmin-Matcher-Konstrukte
# 5) vor jedem : Dies ist ein globales Konstrukt, das von Jasmine bereitgestellt wird, damit Sie Ihre Tests trocken halten können (wiederholen Sie sich nicht). Dieses Konstrukt wird normalerweise im Funktionsparameter des Beschreibungskonstrukts verwendet.
Jeder darin enthaltene Code wird einmal ausgeführt, bevor die Spezifikationen unter den Suiten ausgeführt werden. Daher sollte jeder Code, den Sie zuerst ausführen möchten, bevor alle Spezifikationen in der Suite vorliegen, hier platziert werden.
# 6) nach jedem: Dieses Konstrukt ist dasselbe wie beforeEach, und der Unterschied besteht darin, dass der darin enthaltene Code nach jedem Code ausgeführt wird, sobald das Beschreibungskonstrukt ausgeführt wird.
# 7) das : Dieses Konstrukt ist ein leeres Objekt, mit dem Werte für alle Konstrukte 'beforeEach', 'afterEach' und 'it' in beliebigen Testsuiten gemeinsam genutzt werden können. Jede Testsuite hat ein eigenes Objekt und das Objekt wird auf leer zurückgesetzt, bevor die Testsuiten ausgeführt werden.
# 8) xdescribe : Dieses Konstrukt wird verwendet, um die Software-Suites zu deaktivieren. Es weist den Testläufer einfach an, die Testsuite zu überspringen, und daher wird das Ergebnis nicht angezeigt und berücksichtigt.
# 9) getroffen : Dieses Konstrukt wird verwendet, um eine Spezifikation in einer Suite als ausstehende Spezifikation anzugeben. Eine ausstehende Spezifikation ist eine Spezifikation, die nicht ausgeführt wird, deren Namen jedoch im Testergebnis als ausstehend angezeigt werden.
Wenn in einer Spezifikation die ausstehende Funktion aufgerufen wird, wird die Spezifikation als ausstehende Spezifikation markiert. Jede Spezifikation, die ohne Funktionskörper deklariert wurde, wird ebenfalls als ausstehend markiert.
# 10) spyOn : Dieses Konstrukt wird verwendet, um einen Jasminspion zu erstellen. Spione sind Spott. Mocks sind gefälschte Objekte, die erstellt wurden, um das reale Objekt darzustellen oder nachzuahmen. Mocks sind erforderlich, um die Gemeinkosten für die Erstellung des realen Objekts, das sie darstellen, zu vermeiden.
Das Wesentliche beim Testen eines Codes durch eine Einheit besteht darin, zu sehen, wie sich eine Funktion unter verschiedenen Bedingungen verhält, unabhängig von den anderen angeschlossenen Einheiten oder wird mit ihr verbunden.
Daher führen wir Front-End-Unit-Tests durch, um festzustellen, wie sich eine Einheit des Front-End unseres Softwareprodukts unabhängig von den anderen Front-End-Einheiten verhält, die angeschlossen oder mit ihr verbunden werden.
Während dieses Tests rufen wir verschiedene Argumente und Funktionen auf, die von anderen Funktionen und Objekten wie Netzwerkverbindungen, Datenquellen und Dateien abhängig sein können.
Um diese Abhängigkeiten zu erfüllen (damit wir Front-End-Unit-Tests durchführen können), müssen die erforderlichen Ressourcen verfügbar gemacht werden. Daher verwenden wir Mocks, um die realen Objekte nachzuahmen und die Gemeinkosten für die tatsächliche Erstellung zu vermeiden.
Beachten Sie, dass auf einer einfachen Ebene spyOn verwendet wird, um zu testen, ob eine abhängige Funktion tatsächlich aufgerufen wird, und diese abhängige Funktion möglicherweise nur eine einfache Funktion ist, die für das Objekt definiert ist, das wir ausspionieren.
Die spyOn-Funktion akzeptiert zwei Parameter: das zu spionierende Objekt und die darin enthaltene Abhängigkeitsfunktion, die überprüft wird, um sicherzustellen, dass unsere Funktion sie aufruft.
Spione existieren in der Suite oder Spezifikation, in der sie definiert sind. Nachdem die Suite oder Spezifikation ausgeführt wurde, hört der Spion auf zu existieren.
# 11) createSpy: Dieses Konstrukt dient demselben Zweck wie spyOn, der Unterschied besteht jedoch darin, dass diese Funktion es ermöglicht, die abhängige Funktion zum Testen durch eine gefälschte zu ersetzen.
Warum muss ich das tun? Dies ist nützlich, wenn die ursprüngliche Abhängigkeit auch von den anderen Ressourcen abhängt, die im Kontext des Tests nicht verfügbar sind.
Auf diese Funktion wird über das Jasmine-Objekt mit einem Punkt zugegriffen, d. H. Jasmine.createSpy (Parameter). Es wird nur ein Parameter benötigt, nämlich eine Zeichenfolge, die den Namen der Abhängigkeit darstellt, für die wir den Mock erstellen.
Beachten Sie, dass nach dem Erstellen eines Spions der Spion beim ersten Anruf undefiniert zurückkehrt, da davon ausgegangen wird, dass der erste Anruf das Training ist. Nach nachfolgenden Aufrufen gibt die Funktion dann den tatsächlichen Wert zurück. Weitere Details finden Sie weiter unten.
Jasmine Test Doppelfunktionsfunktion
Die Konstrukte spyOn und createSpy ermöglichen die Erstellung von Mocks (für Abhängigkeiten). Dies ist nichts anderes als das Testen von zwei Funktionen in einem Test, daher die Aussage „Testdoppelfunktion“.
Das andere Wort, das für Mocks verwendet werden kann, ist „Stubs“.
Spy Matchers: Es gibt mehrere Matcher, die auf die Notwendigkeit der Interaktion mit Spionen eingehen. Sie beinhalten: 'ToHaveBeenCalled' und 'toHaveBeenCalledWith' .
-
- toHaveBeenCalled : Dies wird in einer Spezifikation verwendet, um zu bestimmen, dass die abhängige Abhängigkeit aufgerufen wurde.
- toHaveBeenCalledWith : Dies wird in einer Spezifikation verwendet, um zu bestimmen, dass die abhängige Abhängigkeit mit einem bestimmten Satz von Parametern aufgerufen wurde.
Besuch Hier für eine detaillierte Übersicht aller Jasmin-Konstrukte.
kostenlose youtube to mp3 converter app
Zwei Möglichkeiten, Jasmin zu verwenden
Es gibt zwei Möglichkeiten, Jasmin-Tests zu schreiben. Zum einen wird Jasmine über specRunner als eigenständige Distribution verwendet, zum anderen wird Jasmine mit Testrunner verwendet.
Schauen wir uns zunächst an, wie Jasmin-Tests über den specRunner ausgeführt werden.
Wie verwende ich Jasmine Standalone Distribution?
Klicken Hier und laden Sie dann die eigenständige Distribution herunter, indem Sie auf klicken Jasmin-Standalone .
Entpacken Sie die Datei in den Projektordner. Sie werden feststellen, dass diese Verzeichnisse dem Projektverzeichnis hinzugefügt werden: lib, src und spec; und fügt außerdem die folgenden Dateien hinzu: specRunner.html und MIT.LICENSE.
Das lib-Verzeichnis enthält die Jasmine-Bibliothek, die die Tests ausführt, die in den Testdateien enthalten sind, die der Datei specRunner.html hinzugefügt wurden. Mit der Datei specRunner.html können Sie den Test ausführen und das Ergebnis im Browser in einem Webseitenformat und nicht im Konsolenfenster anzeigen.
Das src-Verzeichnis enthält die Front-End-Quellcodes, und das spec-Verzeichnis enthält die Testdateien, die mit Jasmine-Testsuiten geschrieben wurden. Standardmäßig können Sie einige Testsuiten und Dateien in den Verzeichnissen sehen, aber wir werden diese nicht verwenden. Wir würden unsere eigenen Tests in unseren nachfolgenden Tutorials schreiben.
Verwenden von Jasmin mit einem Testläufer
Dies ist die zweite Möglichkeit, Jasmine zu verwenden, bei der Sie einen Testläufer wie Karma konfigurieren und ihn mit Ihrer Quelldatei und der Testspezifikationsdatei füttern, um die Tests auszuführen.
Anschließend können Sie entweder die Ergebnisse anzeigen und Berichte mit Istanbul erstellen oder die Testergebnisse auf coveralls.io veröffentlichen.
Einführung in Jasmine-Jquery
Jasmine-Jquery ist ein Knotenpaket, das das Testen von mit jquery erstellten Front-End-Codes unterstützt. In gewisser Weise erweitert es das Jasmine-Framework so, dass es für die Front-End-Tests von Jquery gut geeignet ist.
Zu den Erweiterungen, die dem Jasmine-Framework hinzugefügt werden, gehören:
- Eine Reihe von benutzerdefinierten Matchern für das Jquery-Framework, z. B. toBeChecked, toBeDisabled, toBeEmpty usw.
- Eine API für den Umgang mit HTML-, CSS- und JSON-Fixtures in unseren Spezifikationen.
Die Frage lautet nun: Was ist eine API? Eine API (Application Programming Interface) ist eine Schnittstelle, über die Sie auf bestimmte Funktionen zugreifen können, deren Erstellung von Grund auf Zeit und Ressourcen erfordert.
Eine andere Frage ist, was sind Geräte? Fixtures sind vordefinierte Zustände eines Objekts, die wir normalerweise beim Schreiben von Tests erstellen, um eine Basislinie (eine bekannte und feste Umgebung) zu erstellen, für die die Tests ausgeführt werden, um die Ergebnisse wiederholbar zu machen.
Sehen Hier Weitere Informationen zu den benutzerdefinierten Matchern und APIs.
Fazit
In diesem Tutorial haben wir versucht zu verstehen, was ein Testframework ist, und wir haben Jasmine als JavaScript-Testframework eingeführt. Wir haben uns verschiedene Jasmine-Konstrukte angesehen, mit denen Testspezifikationen geschrieben werden können, und schließlich Jasmine-Jquery eingeführt, ein knotenbasiertes Paket, das Jasmine erweitert, um Jquery-Anwendungen testen zu können.
Imbissbuden
- Ein Testframework ist eine Reihe von Programmen oder Paketen, die das Testen der Software erleichtern, um die Qualität der entwickelten Software sicherzustellen.
- Jasmine ist ein verhaltensorientiertes Entwicklungstool, das Konstrukte bereitstellt, die das Schreiben von Testspezifikationen für JavaScript-Anwendungen erleichtern.
- Testgetriebene Entwicklung ist ein Entwicklungsansatz, bei dem wir die Tests zuerst schreiben und dann ausführen. Jeder Test schlägt bei seiner ersten Ausführung fehl, da die von ihm verwendete Funktion noch nicht geschrieben wurde. Wir schreiben dann die Funktionen und führen die Tests erneut aus. Hier schlagen einige Tests fehl und andere bestehen. Dann überarbeiten wir den Code so lange, bis alle Tests bestanden sind.
- Ein verhaltensorientierter Entwicklungsansatz ist ein Entwicklungsansatz, bei dem Tests geschrieben werden, um sicherzustellen, dass sich die Softwarefunktionen wie von allen Beteiligten erwartet verhalten.
- Jasmine-Jquery ist ein Knotenpaket, das das Testen von mit Jquery erstellten Front-End-Codes unterstützt.
Nächstes Tutorial
In unserem nächsten Tutorial werden wir untersuchen, wie diese beiden Tools (Jasmine und Karma) verwendet werden können, um Testspezifikationen für ein typisches Projekt zu schreiben. Wir würden auch sehen, wie die anderen Tools wie gulp, browserify usw. verwendet werden, die erforderlich sind, damit unsere Tests ausgeführt werden können.
PREV Tutorial | NÄCHSTES Tutorial
Literatur-Empfehlungen
- 8 BDD-Tools (Best Behavior Driven Development) und Test-Frameworks
- Wie die Tester an TDD-, BDD- und ATDD-Techniken beteiligt sind
- TDD Vs BDD - Analysieren Sie die Unterschiede anhand von Beispielen
- BDD-Framework (Behavior Driven Development): Ein vollständiges Tutorial
- So schreiben Sie ein Teststrategiedokument (mit Beispielvorlage für eine Teststrategie)
- 10 besten API-Testtools im Jahr 2021 (SOAP- und REST-API-Testtools)
- API-Test-Tutorial: Eine vollständige Anleitung für Anfänger
- Python DateTime Tutorial mit Beispielen