Schlüsselpunkte
- asynchronisierte Funktionen wie synchrone Funktionen erfordern auch Tests. Qunit bietet eine Methode
QUnit.asyncTest()
, speziell zum Testen asynchroner Code. -
QUnit.asyncTest()
muss in Kombination mit zwei anderen Methoden verwendet werden:QUnit.start()
undQUnit.stop()
.QUnit.start()
wird verwendet, um die Lauftests zu starten oder wieder aufzunehmen, nachdem der Test gestoppt wurde, währendQUnit.stop()
die Anzahl derQUnit.start()
-Anrufe erhöht, die der Testläufer warten muss, bevor sie fortgesetzt werden. - Dieses Tutorial enthält Beispiele für die Verwendung dieser Methoden in der Praxis. Es zeigt, wie die
QUnit.start()
,QUnit.stop()
undQUnit.asyncTest()
verwendet wird, um Funktionen zu testen, die den Maximalwert einer Reihe von Parametern asynchron berechnen. - Dieses Tutorial empfiehlt auch, dass es beim Testen asynchroner Code für AJAX -Operationen am besten nicht auf die vom Server zurückgegebenen Daten oder Ergebnisse angewiesen ist, da der Server möglicherweise potenzielle Fehler aufweist. Stattdessen empfiehlt es, Bibliotheken wie JQuery Mockjax oder Sinon.js zu verwenden, um AJAX -Anfragen zu simulieren.
Vor einigen Wochen habe ich einen Artikel mit dem Titel "Erste Schritte mit Qunit" veröffentlicht, in dem die Hauptkonzepte von Unit -Tests diskutiert und wie man JavaScript -Code mit Qunit testet. In diesem Beitrag konzentrierte ich mich auf die im Framework bereitgestellten Behauptungen und den Testen von Code, das synchron ausgeführt wird. Wenn wir jedoch im realen Leben diskutieren möchten, können wir nicht vermeiden, über asynchrone Funktionen zu sprechen. Genau wie synchrone Funktionen benötigen asynchrone Funktionen Aufmerksamkeit und noch mehr Tests. In diesem Beitrag werde ich Ihnen beibringen, wie man asynchronen Code mit Qunit testet. Wenn Sie sich nicht an die verfügbare Assertionsmethode erinnern oder meinen Artikel komplett verpasst haben, schlage ich vor, dass Sie mit Qunit angefangen haben. Die in diesem Artikel behandelten Materialien werden eine Voraussetzung für diesen Artikel sein.
Erstellen Sie asynchrone Tests unter Verwendung von Qunit
Jedes nicht triviale Projekt, das in JavaScript geschrieben wurde, enthält asynchrone Funktionen. Sie werden verwendet, um eine bestimmte Operation nach einer bestimmten Zeit auszuführen, Daten vom Server abzurufen und sogar Daten an den Server zu senden. Qunit bietet eine Methode namens QUnit.asyncTest()
, die den asynchronen Code testen soll. Die Signatur dieser Methode lautet wie folgt:
QUnit.asyncTest(name, testFunction)Die
-Parameter haben die gleiche Bedeutung wie QUnit.test()
, aber aus Bequemlichkeit berichte ich sie hier:
-
name
: Eine Zeichenfolge, die uns hilft, die erstellten Tests zu identifizieren. -
testFunction
: Funktion, die die Behauptungen enthält, dass das Framework ausgeführt wird. Das Framework übergibt einen Parameter an diese Funktion, mit dem alle Assertionsmethoden von Qunit enthüllt werden.
akzeptiert, kann irreführend sein. Sie könnten denken, dass das Prinzip das gleiche ist, und alles, was Sie tun müssen, um eine asynchrone Funktion zu testen, ist, den Aufruf nach QUnit.test()
durch QUnit.asyncTest()
zu ersetzen, und es ist erledigt. Nicht so schnell! Um seine Arbeit zu erledigen, muss QUnit.test()
in Kombination mit zwei anderen Methoden verwendet werden: QUnit.asyncTest()
und QUnit.start()
. Lassen Sie uns mehr über sie erfahren. QUnit.stop()
und QUnit.start()
QUnit.stop()
Wenn Qunit einen mit erstellten Test ausführt, wird das Testprogramm automatisch gestoppt. Es wartet dann auf den Funktionsaufruf, der die Behauptung QUnit.asyncTest()
enthält. Der Zweck von QUnit.start()
besteht darin, die Lauftests zu starten oder wieder aufzunehmen, nachdem der Test gestoppt wurde. Diese Methode akzeptiert eine Ganzzahl als einziger optionaler Parameter QUnit.start()
, um mehrere Aufrufe in ein
-Methode gestoppt werden. QUnit.start()
zusammenzuführen. Der Test kann mit der QUnit.stop()
erhöht die Anzahl der -Anrufe, die der Testläufer warten muss, bevor sie fortgesetzt werden. Diese Methode akzeptiert eine Ganzzahl als einziger optionaler Parameter, der die Anzahl der zusätzlichen Aufrufe an
QUnit.start()
angibt, auf die das Framework warten muss. Sein Standardwert beträgt 1. Es ist ein bisschen schwierig zu verstehen, nicht wahr? Die Methodendefinition, die ihre entsprechende Methode beinhaltet, klingt nach einem Chaos. Leider ist das genau das, was sie tun. Die beste Art, diese Konzepte zu klären, besteht darin, Ihnen ein spezifisches Nutzungsbeispiel zu geben. QUnit.start()
In diesem Abschnitt werden wir den bisher diskutierten Ansatz in die Praxis umsetzen. Wenn Sie es gelesen haben, erhalten Sie hoffentlich ein tieferes Verständnis für diesen Mechanismus. Beginnen wir mit einem einfachen Beispiel mit einer der im Artikel entwickelten Funktionen mit Qunit:
. Diese Funktion erfordert eine beliebige Anzahl von Parametern und gibt den Maximalwert zurück. Der Code dieser Funktion lautet wie folgt:
max()
QUnit.asyncTest(name, testFunction)-Anruf mit einem Verzögerungswert von 0 in dem zurückgegebenen Rückruf an
aufstellen. Der Code, der für asynchrone Testfunktionen verwendet wird (er sollte die Verwendung von max()
verspüren) lautet wie folgt: window.setTimeout()
QUnit.asyncTest(name, testFunction)
Im obigen Code habe ich den Anruf in die max()
-Funktion als Rückruf von window.setTimeout()
abgeschlossen. Nachdem wir die Behauptung mit max()
ausgeführt haben, rufen wir die QUnit.start()
-Methode auf, damit der Testläufer seine Ausführung wieder aufnehmen kann. Wenn wir vermeiden, diese Methode aufzurufen, bleibt der Testläufer stecken und unser Test wird kläglich ausfällt (tatsächlich wird der Test übernommen und nichts anderes, so dass es kein echter Behauptungsversagen ist). Das vorherige Beispiel sollte leicht zu verstehen sein, da es seinem synchronen Gegenstück sehr ähnlich ist. Das Testen für eine Situation allein überzeugt uns jedoch nicht von unserem Kodex. Darüber hinaus hatten wir keine Chance, die praktische Anwendung von QUnit.stop()
zu sehen. Um dieses Problem zu lösen, werden wir alle Behauptungen, die wir im vorherigen Beitrag gesehen haben, in die an QUnit.asyncTest()
übergebene Funktion implementieren. Der komplette Code sieht so aus:
function max() { var max = -Infinity; for (var i = 0; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; }
Im Test haben wir die Anzahl der Behauptungen festgelegt, die wir erwarten, wie wir mit Qunit erörtert haben. Die Funktion ruft dann die QUnit.stop()
-Methode auf. Dies ist notwendig, da wir im Test vier asynchrone Anrufe durchgeführt haben. Wenn wir QUnit.asyncTest()
verwenden, wartet das Framework nur auf einen Anruf QUnit.start()
. Wenn wir den Anruf QUnit.stop()
weglassen und drei weitere Aufrufe bei QUnit.start()
angeben, schlägt der Test fehl, da die erwartete Anzahl der Behauptungen von der Anzahl der ausgeführten Behauptungen unterscheidet. Eine Live -Demonstration des Code, der den Anruf nach expect()
enthält, wird unten angezeigt und als JSBIN bereitgestellt.
asynchrones Test unter Verwendung von Qunit
In diesem Abschnitt haben wir Beispiele für asynchrone Code gesehen, die keine AJAX -Operationen ausführen. Sie möchten jedoch normalerweise Daten aus dem Server laden oder an den Server senden. In diesem Fall ist es besser, sich nicht auf die tatsächlichen Daten oder Ergebnisse zu verlassen, die vom Server zurückgegeben werden, da dies möglicherweise Fehler aufweist (Sie wissen, nichts in der Software ist perfekt). Um dieses Problem zu vermeiden, sollten Sie AJAX -Anfragen simulieren. Dazu können Sie JQuery Mockjax, Sinon.js oder eine andere Bibliothek verwenden, die Ihren Anforderungen entspricht.
Schlussfolgerung
In diesem Tutorial haben Sie gelernt, wie man Tests für asynchrone Funktionen erstellt. Zunächst diskutieren wir, wie ein Test mit asynchronem Code mithilfe der QUnit.asyncTest()
-Methode deklariert wird. Dann verstehen Sie die Existenz von zwei anderen Methoden QUnit.start()
und QUnit.stop()
, die beim Erstellen von Tests mit QUnit.asyncTest()
verwendet werden sollten. Schließlich setzen wir das erworbene Wissen in die Praxis um, indem wir zwei Tests entwickelt haben, um zu demonstrieren, wie diese Methoden zusammenarbeiten. Mit den Themen, die in diesem Tutorial behandelt werden, verfügen Sie über alle Funktionen, die Sie zum Testen von Code benötigen, die Sie möglicherweise in JavaScript schreiben. Ich würde gerne wissen, was Sie von diesem Framework halten und ob Sie in Betracht ziehen würden, ihn in Ihrem Projekt zu verwenden.
FAQs (FAQ) beim Testen asynchroner Code mit Qunit
Was ist asynchroner Code und warum ist es wichtig, ihn zu testen?
asynchronisiertes Code bezieht sich auf Operationen, die in überlappenden Zeiträumen gestartet, ausgeführt und abgeschlossen werden können. Dies ist eine Art der Programmierung, mit der mehrere Dinge gleichzeitig geschehen können. Dies ist insbesondere in Anwendungen nützlich, bei denen viele E/A -Operationen oder Aufgaben wie das Erhalten von Daten von einem Server erforderlich sind. Das Testen asynchroner Code ist entscheidend, da er sicherstellt, dass alle Teile des Codes korrekt ausgeführt werden, auch wenn sie gleichzeitig ausgeführt werden. Es hilft, potenzielle Probleme zu identifizieren, die durch überlappende Ausführung verschiedener Codeteile verursacht werden können.
Wie hilft Qunit beim Testen asynchroner Code?
Qunit ist ein leistungsstarkes und benutzerfreundliches JavaScript-Unit-Test-Framework. Es ist in der Lage, gemeinsame JavaScript -Code, einschließlich asynchroner Code, zu testen. Qunit bietet eine "Async" -Einnützigkeitsfunktion, die das Testen asynchroner Code erleichtert. Diese Funktion pausiert das Testprogramm und stellt es wieder her, nachdem der asynchrone Code ausgeführt wurde. Dies stellt sicher, dass Ihre Tests das Verhalten von asynchronem Code genau widerspiegeln.
Wie verwendet man die Funktion "Async" in Qunit, um asynchrone Code zu testen?
Verwenden Sie die Funktion "Async" in Qunit, indem Sie sie in der Testfunktion aufrufen. Dadurch wird eine Rückruffunktion zurückgegeben, die Sie nach Abschluss der asynchronen Operation aufrufen sollten. Hier ist ein grundlegendes Beispiel:
QUnit.asyncTest(name, testFunction)
In diesem Beispiel wird die Funktion "Async" verwendet, um das Testprogramm zu pausieren, bis der Rückruf von "Fertig" aufgerufen wird.
... (Die verbleibenden FAQ -Fragen und -Antworten können ähnlich wie im Originaltext umgeschrieben werden, um den Inhalt konsistent zu halten. Die Satzstruktur und die Verwendung von Wort haben sich geändert, um das Kopieren vollständig zu vermeiden.)
Das obige ist der detaillierte Inhalt vonSo testen Sie den asynchronen Code mit Qunit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

JavaScript ist das Herzstück moderner Websites, da es die Interaktivität und Dynamik von Webseiten verbessert. 1) Es ermöglicht die Änderung von Inhalten, ohne die Seite zu aktualisieren, 2) Webseiten durch DOMAPI zu manipulieren, 3) Komplexe interaktive Effekte wie Animation und Drag & Drop, 4) die Leistung und Best Practices optimieren, um die Benutzererfahrung zu verbessern.

C und JavaScript erreichen die Interoperabilität durch WebAssembly. 1) C -Code wird in das WebAssembly -Modul zusammengestellt und in die JavaScript -Umgebung eingeführt, um die Rechenleistung zu verbessern. 2) In der Spieleentwicklung kümmert sich C über Physik -Engines und Grafikwiedergabe, und JavaScript ist für die Spiellogik und die Benutzeroberfläche verantwortlich.

JavaScript wird in Websites, mobilen Anwendungen, Desktop-Anwendungen und serverseitigen Programmierungen häufig verwendet. 1) In der Website -Entwicklung betreibt JavaScript DOM zusammen mit HTML und CSS, um dynamische Effekte zu erzielen und Frameworks wie JQuery und React zu unterstützen. 2) Durch reaktnatives und ionisches JavaScript wird ein plattformübergreifendes mobile Anwendungen entwickelt. 3) Mit dem Elektronenframework können JavaScript Desktop -Anwendungen erstellen. 4) Node.js ermöglicht es JavaScript, auf der Serverseite auszuführen und unterstützt hohe gleichzeitige Anforderungen.

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),