Heim > Web-Frontend > js-Tutorial > Unit -Tests Backbone.js Anwendungen

Unit -Tests Backbone.js Anwendungen

Lisa Kudrow
Freigeben: 2025-02-24 09:38:10
Original
673 Leute haben es durchsucht

Unit -Tests Backbone.js Anwendungen

Nachdem Sie Stunden verbracht haben, können Sie eine fantastische neue Funktion für Ihre Webanwendung endgültig in Aktion sehen. Sie fügen den neuen Code zu Ihrer JavaScript -Basis hinzu, erstellen den Release -Kandidaten und starten Ihren Browser, um erstaunt zu sein. Dann… ähm, oh… die neue Funktion mag einwandfrei funktionieren, aber ein anderer kritischer Teil Ihrer App - ein Teil, den Sie bei der Entwicklung der neuen Version nicht berührt haben - ist schrecklich schief geworden. Jetzt sind Sie vor der Herausforderung, durch Arbeitstage zu versuchen, herauszufinden, wie Sie den vorhandenen Code gebrochen haben. Happy Days sind definitiv nicht wieder da. Dieses Szenario hat mich mehr gebissen, als ich zugeben möchte. Und wenn Sie eine Weile codiert haben, haben Sie es wahrscheinlich auch gesehen. Bedenken Sie jedoch, was dieses Szenario so schmerzhaft macht. Es liegt nicht wirklich daran, dass unser neuer Code den vorhandenen Code gebrochen hat. Das ist unvermeidlich in der Entwicklung. Der wahre Schmerz ist, dass es so lange dauerte, um den Bruch zu bemerken. Bei so viel Entwicklung, da wir wussten, dass unsere Anwendung funktioniert, gibt es eine große Menge an Code, in dem sich der Fehler versteckt. Und obwohl es ein bisschen wie die Jagd nach einer Nadel in einem Heuhaufen erscheinen mag, haben wir keine andere Wahl, als sie zu tauchen.

In diesem Artikel werden wir dieses Szenario aus unserer JavaScript -Entwicklung wirklich verbannen. Kein Durchsuchen von Stunden, Tagen oder Wochen Code, die nach einer Nadel suchen. Das Prinzip, das wir übernehmen werden, ist einfach: Finden Sie einen Fehler

, sobald wir

es erstellen. Das ist richtig. Wir werden eine Entwicklungsumgebung und einen Prozess einrichten, der uns sofort mitteilt, wenn wir Code schreiben, der einen Fehler einführt. Darüber hinaus wird die zusätzliche Anstrengung, die wir in den Prozess unternommen haben, nicht nach Abschluss der Erstentwicklung nicht mehr verschwendet. Der gleiche Testcode, der unsere Entwicklungsfehler fängt, ist in einer Integrationsumgebung vollständig wiederverwendbar. Wir können die Tests problemlos in unser Quellcode -Managementsystem einbeziehen und Fehler blockieren, bevor sie überhaupt in unsere Codebasis einsteigen können.

In den folgenden vier Abschnitten werden wir uns zunächst die Tools ansehen, die wir für eine JavaScript -Testumgebung benötigen. Wir werden dann eine triviale Anwendung in Betracht ziehen, die einfach genug ist, um sie zu verstehen, aber über alle Funktionen und Funktionen verfügt, die in einer realen Webanwendung vorhanden sind. Die letzten beiden Abschnitte zeigen, wie wir unsere Umgebung nutzen können, um die Beispiel -App während der Entwicklung zu testen, und nach Abschluss der ersten Entwicklung während der Integration.

Key Takeaways

  • betonen die frühzeitige Erkennung von Fehler während der Entwicklung, um komplexe Probleme in späteren Phasen zu verhindern, ein reibungsloses Codierungserlebnis zu gewährleisten und die Rückverfolgung zu minimieren.
  • Verwenden Sie Mokka aufgrund seiner Kompatibilität sowohl mit Browser- als auch mit Node.js -Umgebungen als Kerntest -Framework, wodurch der nahtlose Übergang von der Entwicklung zu Integrationstests ermöglicht wird.
  • Integrieren Sie die Chai -Assertion -Bibliothek, um die Lesbarkeit und Flexibilität der Tests zu verbessern und mehrere Stile anzubieten (zu erwarten), die unterschiedliche Entwicklerpräferenzen aussprechen.
  • Sinon.js zum Erstellen von Spione, Stubs und Mocks beschäftigen, die für das Testen von Interaktionen mit externen Bibliotheken und Diensten unerlässlich sind, ohne ihre Operationen zu beeinflussen.
  • Richten Sie eine kontinuierliche Testumgebung mit Test'EM ein, um Tests bei Codeänderungen automatisch auszuführen und so ein sofortiges Feedback zur Gesundheit der Anwendung zu erhalten.
  • Während der Entwicklung konzentrieren Sie sich auf die Erstellung detaillierter Unit -Tests für Modelle, Ansichten und Sammlungen, um sicherzustellen, dass jede Komponente isoliert korrekt funktioniert.
  • Übergang reibungslos zu Integrationstests, indem die Einheitstests für die Befehlszeilenausführung mit node.js angepasst werden, um sicherzustellen, dass sich die Anwendung wie erwartet in der Produktionsumgebung verhält.

Zusammenstellung einer JavaScript -Testumgebung

Unsere Einheitstests Nirvana erfordert einige Entwicklungstools, die (noch) nicht in Ihrer Workbench enthalten sind. Die Nachrichten, sowohl gut als auch schlecht, ist, dass es viele Optionen gibt. Das sind gute Nachrichten, weil es uns Optionen gibt, und das sind schlechte Nachrichten, denn das Tempo der heutigen Entwicklung von Front End bedeutet, dass es viel zu viele Optionen gibt. Um unsere Bewertung zu fokussieren, lassen Sie uns explizit über unsere beiden besten Ziele gehen. Alles andere ist sekundär:

  1. Unsere Umwelt muss reibungslose, kontinuierliche Tests während der Entwicklung unterstützen.
  2. während der Entwicklung erstellte Tests müssen in der Integration gleichermaßen verwendbar sein.

Ausführungsumgebungen

Für die JavaScript -Codierung gibt es keine bessere Entwicklungsumgebung als der moderne Webbrowser. Unabhängig davon, ob Ihr Geschmack Firebug oder Webkit's Developer Tools ist, unterstützt der Browser die Live -DOM -Inspektion und -bearbeitung, das vollständige interaktive Debugging und die hoch entwickelte Leistungsanalyse. Webbrowser eignen sich hervorragend für die Entwicklung. Daher müssen sich unsere Testwerkzeuge und unsere Umgebung in die Entwicklung des Browsers integrieren. Webbrowser sind jedoch nicht so gut für Integrationstests. Integrationstests werden häufig irgendwo in der Cloud (oder am wenigsten irgendwo im Rechenzentrum) auf Servern stattfinden. Diese Systeme haben nicht einmal eine grafische Benutzeroberfläche, geschweige denn ein moderner Webbrowser. Für effiziente Integrationstests benötigen wir einfache Befehlszeilenskripte und eine JavaScript -Ausführungsumgebung, die sie unterstützt. Für diese Anforderungen ist das Tool der Wahl Node.js. Obwohl es eine andere Befehlszeile für JavaScript -Umgebungen gibt, hat keiner die Breite und Tiefe der Unterstützung, um Node.js. In der Integrationsphase müssen sich unsere Testwerkzeuge in node.js.

integrieren

Test Framework

Jetzt, da wir festgestellt haben, dass unsere Test -Tools sowohl Webbrowser- als auch Node.js -Umgebungen unterstützen müssen, können wir die Auswahlmöglichkeiten eingrenzen, um ein Kern -Test -Framework auszuwählen. Es gibt viele JavaScript -Test -Frameworks, aber die meisten sind stark auf Browser -Tests voreingenommen. Es ist normalerweise möglich, sie mit node.js zum Arbeiten zu bringen, erfordert jedoch oft unelegante Hacks oder Änderungen. Ein Rahmen, der nicht unter diesem Problem leidet, ist Mokka, das sich zu Recht als:

beschreibt

Mokka ist ein featurereiches JavaScript-Test-Framework, das auf Knoten und Browser ausgeführt wird, wodurch asynchrone Tests einfach und unterhaltsam sind.

Ursprünglich für Node.js entwickelt, wurde Mokka erweitert, um auch Webbrowser zu unterstützen. Durch die Verwendung von Mocha als Testframework können wir Tests schreiben, die sowohl die Entwicklung als auch die Integration ohne Änderung unterstützen.

Assertion Library

Im Gegensatz zu einigen JavaScript -Test -Frameworks wurde Mokka für maximale Flexibilität ausgelegt. Infolgedessen müssen wir ein paar zusätzliche Teile auswählen, um es vollständig zu machen. Insbesondere brauchen wir eine JavaScript -Assertion -Bibliothek. Dafür verlassen wir uns auf die Chai Assertion Library. Chai ist insofern etwas einzigartig, als es alle gängigen Assertionsstile unterstützt - Assert , erwarten, und sollten. Code. Unter den Abdeckungen sind sie alle gleichwertig. Es ist einfach, Tests von einem Behauptungsstil zum anderen zu übersetzen. Der Hauptunterschied in den Behauptungsstilen ist ihre Lesbarkeit. Die Auswahl des Behauptungsstils hängt hauptsächlich davon ab, welchen Stil Sie (oder Ihr Team) am lesbarsten finden und welcher Stil die verständlichsten Tests erzeugt. Um den Unterschied zu erkennen, sollten Sie einen trivialen Test für den folgenden Code entwickeln:

<span>var sum = 2 + 2;</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Ein traditioneller Test im Assert-Stil könnte geschrieben werden als:

assert<span>.equal(sum, 4, "sum should equal 4");</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Dieser Test erledigt die Aufgabe, aber wenn Sie sich jedoch nicht an die Tests der alten Schule gewöhnt haben, ist es wahrscheinlich ein wenig schwierig, zu lesen und zu interpretieren. Ein alternativer Behauptungsstil verwendet Erwartung:

<span>expect(sum).to.equal(4);</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Die meisten Entwickler finden, dass Behauptungen im Stil von Erwartung leichter zu lesen und zu verstehen sind als Tests im Assert-Stil. Die dritte Alternative sollte Testbehauptungen noch mehr wie natürliche Sprache:

sum<span>.should.equal(4);</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Die Chai -Bibliothek unterstützt alle drei Assertionsstile. In diesem Artikel bleiben wir sollten.

Spione, Stubs und Mocks

Die meisten Web -Apps, einschließlich des trivialen Beispiels, das wir in diesem Artikel berücksichtigen, stützen sich auf Bibliotheken und Dienste von Drittanbietern. In vielen Fällen erfordert das Testen unseres Codes diese Bibliotheken und Dienste beobachten oder sogar kontrollieren -. Die Sinon.js -Bibliothek bietet viele Tools zum Testen dieser Interaktionen. Solche Werkzeuge fallen in drei allgemeine Klassen:

  • Spion . Testcode, der Aufrufe zu Funktionen außerhalb des zu testenden Code beobachtet. Spione beeinträchtigen den Betrieb dieser externen Funktionen nicht; Sie zeichnen lediglich den Aufruf und den Rückgabewert auf.
  • Stub . Testcode, der für Aufrufe von Funktionen außerhalb des zu testenden Codes steht. Der Stub -Code versucht nicht, die externe Funktion zu replizieren. Es verhindert einfach ungelöste Fehler, wenn der untersuchte Code auf die externe Funktion zugreift.
  • Mock . Testen Sie den Code, der Funktionen oder Dienste außerhalb des untersuchten Codes nachahmt. Mit Mocks kann der Testcode die Rückgabewerte aus diesen Funktionen oder Diensten angeben, damit er die Antwort des Codes überprüfen kann.
Zusammen mit der Sinon.js -Bibliothek selbst können wir die Standard -Chai -Assertion -Bibliothek mit Sinon.js -Behauptungen für Chai erhöhen.

Eine Umgebung für die Entwicklung von Unit -Tests

Das letzte Werkzeug für unsere Test -Workbench ist eine Entwicklungsumgebung für Unit -Tests. In unserem Beispiel werden wir Test'EM verwenden. Test'EM ist eine Sammlung praktischer Skripte, um eine kontinuierliche Testumgebung einzurichten und auszuführen. Wir könnten, wenn wir uns dafür entscheiden, die Skripte selbst schreiben und die Umgebung manuell verwalten. Toby Ho (Test’em's Creator) hat jedoch ein fantastisches Paket zusammengestellt, das uns die Mühe sparen kann.

Die Beispielanwendung

Um unsere Testumgebung in Aktion zu sehen, betrachten wir eine einfache Anwendung. Obwohl diese Anwendung mit seinen nötigen Wesentlichen entspricht, enthält sie alle Funktionen für eine reale Anwendung. (Der vollständige Quellcode für die Anwendung ist auf GitHub verfügbar.)

Unit -Tests Backbone.js Anwendungen

Benutzer können ihre Liste der Todos sehen und sie können auf ein Kontrollkästchen klicken, um den Status eines jeden Todo zu umschalten.

Die Todos -Datenbank

Unsere Anwendung beginnt mit einer Datenbanktabelle, in der die Informationen für TODOS enthalten sind. Hier ist der SQL, mit dem wir diese Tabelle erstellen können.

<span>var sum = 2 + 2;</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Und so ist die Tabelle, für die wir einige Testdaten einfügen könnten.

id Titel vollständig 1a Beispiel für Todoelement in der Datenbank0 2another Probe TODO Item1 3yet ein weiteres Beispiel todo item00

Wie die Tabelle zeigt, enthalten unsere Todos nur einen Primärschlüssel (ID), einen Titel und ein Statusbit, um anzuzeigen, ob sie vollständig sind oder nicht.

Eine REST -API

Unsere Webanwendung benötigt Zugriff auf diese Datenbank, sodass wir eine Standard -REST -Schnittstelle bereitstellen. Die API folgt den Ruby Conventions, kann jedoch einfach von jeder Servertechnologie implementiert werden. Insbesondere:

  • GET API/TODOS gibt ein JSON-kodierter Array aller Zeilen in der Datenbank zurück.
  • GET API/TODOS/NNN RETTIERT Die JSON -Darstellung des TODO mit ID gleich nnn.
  • post api/todos fügt der Datenbank mit den JSON-kodierten Informationen in der Anfrage ein neues Todo hinzu.
  • API/TODOS/NNN-Aktualisierung der TODO mit der ID gleich NNN mit den JSON-kodierten Informationen in der Anfrage aktualisiert.
  • .
  • api/todos/nnn löschen löscht die Todo mit ID, die nnn aus der Datenbank entspricht.

Wenn Sie Ruby nicht besonders mögen, enthält der Quellcode eine vollständige PHP -Implementierung dieser API.

JavaScript -Bibliotheken

Unsere bescheidene Anwendung ist einfach genug, um in reinem JavaScript ohne Bibliotheken zu implementieren, aber wir haben weitaus größere Pläne. Wir starten vielleicht klein, aber schließlich wird die App erstaunliche Funktionen und eine entzückende Benutzeroberfläche bieten. In Vorbereitung auf diesen Tag werden wir auf einem Framework aufbauen, das unsere Ultimate Killer -App unterstützen kann:
  • jQuery für DOM -Manipulation, Ereignisbehandlung und Serverkommunikation.
  • unterstrich.js, um die Kernsprache mit vielen unbeständigen Versorgungsunternehmen zu verbessern.
  • Backbone.js, um die Struktur der Anwendung in Bezug auf Modelle und Ansichten zu definieren.

ein HTML -Skelett

Jetzt, da wir die Komponenten kennen, die unsere Anwendung umfassen, können wir das HTML -Skelett definieren, das es unterstützt. Es ist (noch) nichts Besonderes, nur ein minimales HTML5 -Dokument, einige JavaScript -Dateien und ein kleines Stück Code, um die Dinge zu beginnen.

<span>var sum = 2 + 2;</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Tests während der Entwicklung

Nachdem wir unsere Tools ausgewählt und die Anwendung angegeben haben, ist es an der Zeit, die Entwicklung zu beginnen. Unsere erste Aufgabe ist die Installation der Tools.

installieren Sie die Tools

Obwohl wir uns im Browser entwickeln werden, beruht unsere Testumgebung auf node.js. Der allererste Schritt ist daher die Installation von Node.js und dem Node Package Manager (NPM). Auf der Website node.js gibt es ausführbare Binärdateien für OS X, Windows, Linux und Sunos sowie einen Quellcode für andere Betriebssysteme. Nach dem Ausführen des Installationsprogramms können Sie sowohl node.js als auch npm über die Befehlszeile überprüfen.

assert<span>.equal(sum, 4, "sum should equal 4");</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Alles andere, was wir brauchen, ist bequem als Knotenpaket erhältlich. Der Knotenpaket -Manager kann seine Installation sowie alle Abhängigkeiten verarbeiten.

<span>expect(sum).to.equal(4);</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen der Projektstruktur

Der Quellcode für dieses Beispiel enthält eine vollständige Projektstruktur mit den folgenden 15 Dateien:

sum<span>.should.equal(4);</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Hier ist, was jeder Ordner und die Datei enthält:

  • Todos.html: Die Skelett -HTML -Datei für unsere Anwendung, vollständig oben angezeigt.
  • testem.json: Die Konfigurationsdatei für Test'EM; Wir werden uns das in Kürze ausführlich ansehen.
  • API/: Ein Ordner für unsere REST -API -Implementierung.
    • api/htaccess: Beispielkonfiguration für den Apache -Webserver, der unsere REST -API unterstützt.
    • api/todos.php: PHP -Code zur Implementierung der REST -API.
  • lib/: Ein Ordner für JavaScript -Bibliotheken, die von der App selbst und dem Test -Framework verwendet werden.
    • lib/backbone-min.js: Minified Version von Backbone.js.
    • lib/chai.js: Chai Assertion Library.
    • lib/jQuery-1.9.0.min.js: Minified Version von JQuery.
    • lib/sinon-1.5.2.js: Sinon.js Library.
    • lib/sinon-chai.js: Sinon.js Behauptungen für Chai.
    • lib/unterstrich-min.js: Minified Version von UnsCore.js.
  • Mysql/: Ein Ordner für MySQL -Code für die Anwendung.
    • mysql/todos.sql: MySQL -Befehle zum Erstellen der Anwendungsdatenbank.
  • PHP-LIB/: Ein Ordner für PHP-Bibliotheken und Konfiguration für die REST-API der Anwendung.
    • php-lib/dbconfig.inc.php: PHP-Datenbankkonfiguration für die Rest-API.
  • src/: Ein Ordner für unseren clientseitigen Anwendungscode.
    • src/App-todos.js: Unsere Anwendung.
  • Test/: Ein Ordner für den Testcode.
    • test/App-todos-test.js: Testcode für unsere Anwendung.
    • test/mocha.opts: Konfigurationsoptionen für Mokka; Wir werden uns das im nächsten Abschnitt ansehen.

Während der Entwicklung interessieren wir uns nur für drei dieser Dateien, testem.json, src/App-todos.js und test/App-todos-test.js.

test’em

konfigurieren

Der letzte Schritt vor der tatsächlichen Entwicklung ist die Definition der Test'EM -Konfiguration. Diese Konfiguration befindet sich im JSON-formatierten Testem.json und ist einfach genug, um in jedem Texteditor zu erstellen. Wir geben lediglich an, dass wir Mokka verwenden (test’em unterstützt mehrere Frameworks) und listen die JavaScript -Dateien auf, die unsere Anwendung und unser Testcode benötigt.

<span>var sum = 2 + 2;</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beginnen Sie mit der Entwicklung

Schließlich können wir codieren. Navigieren Sie in einer Befehlsschale zum Stammordner unseres Projekts und führen Sie das Befehlstestem aus. In den Tests -Skripten wird das Terminalfenster gelöscht und uns eine URL oben rechts geben. Kopieren Sie diese URL in unseren Browser Ihrer Wahl und wir sind ausgeschaltet.

Unit -Tests Backbone.js Anwendungen

Sobald wir den Webbrowser starten, werden automatisch alle von uns definierten Tests ausgeführt. Da wir gerade erst mit der Entwicklung beginnen, haben wir keinen Code oder keine Testfälle. Der Browser wird uns freundlich darauf hinweisen.

Unit -Tests Backbone.js Anwendungen

Das Terminalfenster, aus dem wir Test'EM gestartet haben, gibt uns auch den Status.

Unit -Tests Backbone.js Anwendungen

Ein erster Testfall

Im Geiste der echten testgetriebenen Entwicklung werden wir mit unserem ersten Testfall in der Datei test/App-todos-test.js schreiben. Wie bei jeder guten Web -App möchten wir die Verschmutzung des globalen Namensraums minimieren. Dazu verlassen wir uns auf eine einzelne globale Variable, Todoapp, um unseren gesamten Code zu enthalten. In unserem ersten Testfall wird sichergestellt

<span>var sum = 2 + 2;</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Wie Sie sehen, brauchen wir eine vorläufige Erklärung, um Mokka mitzuteilen, dass wir Chai -Behauptungen verwenden. Dann können wir beginnen, Tests zu schreiben. Durch Konvention werden JavaScript-Tests in Blöcke organisiert (die in Unterblockierungen usw. verschachtelt werden können). Jeder Block beginnt mit einem Funktionsaufruf von beschreiben (), um zu ermitteln, welchen Teil des Code, den wir testen. In diesem Fall testen wir die Gesamtanwendung. Dies ist also der erste Parameter, der beschreibt ().

In einem Testblock dokumentieren wir jeden Testfall nach dem, was es testet. Das ist der Zweck der IT () -Funktion. Der Weg zum Lesen eines Testfalls besteht darin, die Beschreibung () und IT () in eine einzelne Aussage zu kombinieren. Unser erster Testfall ist daher

Anwendung erstellt eine globale Variable für den Namensraum

Der Testcode selbst befindet sich im IT () -Block. Unser Testfall ist

assert<span>.equal(sum, 4, "sum should equal 4");</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Jetzt haben wir einen vollständigen Testfall. Sobald wir die Datei speichern, übernimmt Test`em automatisch. Es wird festgestellt, dass sich eine unserer Dateien geändert hat, sodass sie die Tests sofort erneut ausführt. Es ist nicht überraschend (da wir noch keinen Code für die Anwendung geschrieben haben) unser erster Test schlägt fehl.

Unit -Tests Backbone.js Anwendungen Das Terminalfenster aktualisiert auch automatisch.

Unit -Tests Backbone.js Anwendungen Um den Testpass zu erstellen, müssen wir die globale Variable der Namensraum erstellen. Wir wechseln zur Datei srcapp-todos.js und fügen den erforderlichen Code hinzu.

<span>expect(sum).to.equal(4);</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Sobald wir die Datei speichern, tritt Test`em erneut in Aktion. Wir erhalten sofort aktualisierte Ergebnisse für unsere Testfälle.

Unit -Tests Backbone.js Anwendungen Treten Sie für einen Moment zurück und überlegen Sie, was passiert! Jedes Mal, wenn wir eine Änderung des Testcode oder in unserer Anwendung vornehmen, werden Tests unsere gesamte Testsuite sofort erneut ausführen. Alles, was wir tun müssen, ist, den Browser- oder Terminalfenster von Test’em in einer Ecke unseres Bildschirms sichtbar zu halten, und wir können die Gesundheit unseres Code in Echtzeit sehen,

, während wir entwickeln. Wir werden wissen, sobald wir einen Fehler einführen, auch wenn sich der Fehler in einem Teil des Codes manifestiert, der sich von dem Ort unterscheidet, in dem wir arbeiten. Kein Durchgabestand durch Stunden, Tage oder Wochen neuer Code, um herauszufinden, wann wir einen Fehler eingeführt haben.

Testen Sie das Modell

Mit unserer jetzt vollständig etablierten Entwicklungsumgebung können wir mit der Entwicklung der Anwendung beginnen. Da unsere App eine Liste von Todos zeigt, ist es möglicherweise gut, ein Modell für diese Todos zu erstellen. Das Modell muss sowohl den Titel des Todo als auch des Status im Auge behalten. Fügen wir einen Unit -Test hinzu, der überprüft, dass wir ein Todo mit angemessenen Standardeinstellungen erstellen können.

<span>var sum = 2 + 2;</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Es sind mehrere Aspekte dieser Tests erwähnenswert.

  • Wir können Testblöcke ineinander nisten. Ein Testblock enthält alle Unit-Tests für das TODO-Modell, und ein Unterblock dieser Tests konzentriert sich auf die Initialisierung.
  • In einem Testblock können wir die Funktionalität vor jedem Test definieren. Das ist der Zweck des Blocks vorab (). Im obigen Beispiel erstellen wir vor jedem Test eine neue Instanz eines TODO.
  • Das Mocha -Framework stellt automatisch sicher, dass der JavaScript -Kontext (d. H. Der Wert dieser) für alle unsere Testfälle konsistent ist. Aus diesem Grund können wir dies in einer Funktion (der Parameter vorab () () definieren und sicher in anderen Funktionen (z. B. die IT () -Parameter) verweisen. Ohne Mokka, die hinter den Kulissen arbeitet, um diese Konsistenz bereitzustellen, würde JavaScript verschiedene Kontexte für jede Funktion definieren.

, da wir den Modellcode noch nicht geschrieben haben, werden alle unsere Tests fehlschlagen. (Und das werden wir sofort wissen.) Aber sobald wir den Code für unser Modell hinzugefügt haben, bestehen die Tests und wir sind auf dem Weg.

assert<span>.equal(sum, 4, "sum should equal 4");</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden von Stubs für die Funktionalität von Drittanbietern

Jetzt, da wir ein einfaches Modell für Todos haben, können wir beginnen, sein Verhalten zu definieren. Eine Sache, die unser Modell tun sollte, ist die Datenbank zu aktualisieren, wenn sich eine der Eigenschaften ändert. In einer Unit -Testumgebung haben wir jedoch keine tatsächliche Datenbank zu überprüfen. Andererseits schreiben wir keinen Code, um das Datenbankaktualisierung durchzuführen. Vielmehr verlassen wir uns auf das Rückgrat, um diese Interaktion zu bewältigen. Dies deutet auf eine Unit -Teststrategie für diesen Testfall hin. Alles, was wir wissen müssen, ist, dass Backbone -Modelle die Save () -Methode verwenden, um den Backing -Store zu aktualisieren, der das Modell anhält. In unserem Fall ist dieser Backing -Store die Datenbank. Hier ist der Unit -Testcode, den wir verwenden können:

<span>expect(sum).to.equal(4);</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir haben vor jedem Test einen zusätzlichen Code beigefügt und nach jedem Test einen Codeabschnitt hinzugefügt. Dieser zusätzliche Code verwaltet einen Sinon -Stub, eine Funktion, die eine andere Funktion im Code effektiv aufgibt. In unserem Fall nimmt der Stub die Save () -Methode dieser. Mit dem Stub gehen Anrufe der Methode nicht in die Backnone -Bibliothek. Stattdessen fängt Sinon diese Anrufe ab und kehrt einfach sofort zurück. Dieses Verhalten ist wichtig. Wenn wir versuchen, die tatsächliche Backbone Save () -Methode in einer Unit -Testumgebung auszuführen, würde der Anruf fehlschlagen, da keine Datenbank oder Server -API verfügbar wäre.

Mit dem Stub können unsere Testfälle das Verhalten des Modells überprüfen. Im ersten Testfall setzen wir den Titel des Todo sofort auf einen neuen Wert. Da dies die Titeleigenschaft ändert, möchten wir, dass unser Modell seinen Backing -Store aktualisiert. Um zu überprüfen, ob wir einfach überprüfen, ob der Stub aufgerufen wurde. Damit unser Modell diese Tests bestanden hat, können wir nach Änderungsereignissen suchen und angemessen reagieren.

<span>var sum = 2 + 2;</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Testen Sie die Ansicht

Natürlich wird unsere App niemandem gut tun, wenn sie den Benutzern die Todos nicht tatsächlich anzeigt, und dies erfordert das Erstellen von HTML. Wir werden Backbone -Ansichten für diese Funktionalität verwenden. In unserer trivialen App möchten wir einfach jeden Todo als Listenelement rendern. Hier sind die Testfälle, die uns anfangen.

assert<span>.equal(sum, 4, "sum should equal 4");</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir beginnen unsere Tests der Ansicht mit zwei Testfällen. Zuerst stellen wir sicher, dass die Render () -Methode der Ansicht die Ansicht selbst zurückgibt. Dies ist eine übliche und sehr bequeme Konvention im Rückgrat, da sie die Methodenverkettung ermöglicht. Unser zweiter Testfall überprüft, dass das HTML -Element, das das Render erstellt, ein Listenelement ist (

  • ). Der Code, der für diese Tests erforderlich ist, ist eine einfache Rückgratansicht.
    <span>expect(sum).to.equal(4);</span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    Als nächstes können wir den detaillierten Inhalt dieser Listenelementansicht entwickeln. Als Beispiel möchten wir, dass das vollständige Listenelement ungefähr wie folgt aussieht.

    sum<span>.should.equal(4);</span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    Für unsere Testfälle können wir JQuery nutzen, um einzelne Elemente aus dem Hauptelement der Ansicht zu extrahieren.

    CREATE TABLE `todos` (
      `id`       int(11)      NOT NULL AUTO_INCREMENT COMMENT 'Primary key for the table.',
      `title`    varchar(256) NOT NULL DEFAULT ''     COMMENT 'The text for the todo item.',
      `complete` bit(1)       NOT NULL DEFAULT b'0'   COMMENT 'Boolean indicating whether or not the item is complete.',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='To Do items.'
    
    Nach dem Login kopieren
    Nach dem Login kopieren

    Beachten Sie, dass wir im letzten Testfall die Methode des Modells Save () gestoppt haben. Da wir eine Eigenschaft von ihrem Standardwert ändern, wird unser Modell pflichtbewusst versuchen, diese Änderung in seinem Backing -Shop zu bestehen. In einer Unit -Testumgebung verfügen wir jedoch nicht über eine Datenbank oder eine Server -API. Der Stub tritt an die Stelle der fehlenden Komponenten und ermöglicht die Tests ohne Fehler. Um diese Tests zu bestehen, müssen wir unserer Ansicht einen zusätzlichen Code hinzufügen.

    <span><span><!DOCTYPE html></span>
    </span><span><span><span><html</span> lang<span>="en"</span>></span>
    </span>  <span><span><span><head</span>></span>
    </span>    <span><span><span><meta</span> charset<span>="utf-8"</span>></span>
    </span>    <span><span><span><title</span>></span><span><span></title</span>></span>
    </span>  <span><span><span></head</span>></span>
    </span>  <span><span><span><body</span>></span>
    </span>    <span><span><span><h1</span>></span>List of Todos<span><span></h1</span>></span>
    </span>
        <span><span><span><script</span> src<span>="lib/jquery-1.9.0.min.js"</span>></span><span><span></script</span>></span>
    </span>    <span><span><span><script</span> src<span>="lib/underscore-min.js"</span>></span><span><span></script</span>></span>
    </span>    <span><span><span><script</span> src<span>="lib/backbone-min.js"</span>></span><span><span></script</span>></span>
    </span>    <span><span><span><script</span> src<span>="src/app-todos.js"</span>></span><span><span></script</span>></span>
    </span>    <span><span><span><script</span>></span><span>
    </span></span><span><span>      <span>$(function () {
    </span></span></span><span><span>        <span>var todos = new todoApp<span>.Todos</span>();
    </span></span></span><span><span>        todos<span>.fetch();
    </span></span></span><span><span>        <span>var list = new todoApp<span>.TodosList</span>({collection: todos});
    </span></span></span><span><span>        <span>$("body").append(list.el);
    </span></span></span><span><span>      <span>})
    </span></span></span><span><span>    </span><span><span></script</span>></span>
    </span>  <span><span><span></body</span>></span>
    </span><span><span><span></html</span>></span></span>
    Nach dem Login kopieren

    Testmodell/Ansichtsinteraktionen

    Jetzt, da wir überprüft haben, dass unsere Ansichtsimplementierung das richtige HTML -Markup erstellt, können wir seine Interaktion mit unserem Modell testen. Insbesondere möchten wir sicherstellen, dass Benutzer einen Todo -Status umschalten können, indem wir auf das Kontrollkästchen klicken. Unsere Testumgebung erfordert keinen tatsächlichen menschlichen Benutzer, daher werden wir JQuery verwenden, um das Click -Ereignis zu generieren. Dazu müssen wir jedoch einem echten Live -Dom Inhalte hinzufügen. Dieser Inhalt wird als Test Fixture bezeichnet. Hier ist der Unit -Testcode.

    bash-3.2$ node --version
    v0.8.18
    bash-3.2$ npm --version
    1.2.2
    bash-3.2$
    
    Nach dem Login kopieren

    Beachten Sie, dass wir die Save () -Methode des Todo erneut stürzen. Andernfalls versucht Backbone, einen nicht existierenden Backing-Store zu aktualisieren, wenn wir den Todo-Status mit unserem simulierten Klick ändern.

    Für den Testfall selbst erstellen wir zunächst ein

    -Element mit einer ID der Fixture und fügen dieses Element unserem Live -Dokument hinzu. Das Live -Dokument ist in diesem Fall die Webseite, auf der die Ergebnisse unserer Tests angezeigt werden. Obwohl wir das Element unmittelbar nach der Überprüfung des Testfalles entfernen, setzen wir seine Anzeigeeigenschaft auch auf keine, sodass es die Anzeige der Testergebnisse durch Mokka nicht beeinträchtigt. Der Code, der diese Funktionalität implementiert, enthält eine kleine Ergänzung zum Todo -Modell. Der Zugabe ist eine neue Togglestatus () -Methode.
    <span>var sum = 2 + 2;</span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    In der Ansicht möchten wir Klickereignisse im Element aufnehmen und diese Methode für das Modell aufrufen.

    assert<span>.equal(sum, 4, "sum should equal 4");</span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    Testen Sie die Sammlung

    Zu diesem Zeitpunkt ist unsere Bewerbung nahezu vollständig. Die einzige verbleibende Funktionalität besteht darin, alle Todos zusammen zu sammeln. Natürlich verwenden wir eine Backbone -Sammlung. Wir werden mit unserer Sammlung eigentlich nichts Besonderes machen, daher brauchen wir keine Unit -Tests.

    <span>expect(sum).to.equal(4);</span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    Wir können jedoch überprüfen, ob unsere Implementierung der Ansicht der Sammlung angemessen ist. Wir möchten, dass diese Ansicht als ungeordnete Liste (

      ) gemacht wird. Die Testfälle erfordern keine Funktionen, die wir zuvor noch nicht gesehen haben.
    sum<span>.should.equal(4);</span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    Die Implementierung der Ansicht ist ebenfalls unkompliziert. Es verfolgt alle Ergänzungen zur Sammlung und aktualisiert die Ansicht. Für das erste Render () fügt es einfach alle Modelle in der Sammlung einzeln hinzu.

    CREATE TABLE `todos` (
      `id`       int(11)      NOT NULL AUTO_INCREMENT COMMENT 'Primary key for the table.',
      `title`    varchar(256) NOT NULL DEFAULT ''     COMMENT 'The text for the todo item.',
      `complete` bit(1)       NOT NULL DEFAULT b'0'   COMMENT 'Boolean indicating whether or not the item is complete.',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='To Do items.'
    
    Nach dem Login kopieren
    Nach dem Login kopieren

    Bonustests: Überprüfen Sie die API

    Da unsere REST -API perfekt der API übereinstimmt, die das Rückgrat erwartet, benötigten wir keinen benutzerdefinierten Code, um die API -Interaktion zu verwalten. Infolgedessen benötigen wir keine Unit -Testfälle. In der realen Welt haben Sie vielleicht nicht so viel Glück. Wenn Ihre API nicht den Rückgratkonventionen entspricht, müssen Sie möglicherweise einen Teil des Backbone-Code überschreiben oder erweitern, um mit der nicht standardmäßigen API umzugehen. Dieser zusätzliche Code benötigt auch Unit -Tests. Glücklicherweise ist es relativ einfach, API -Wechselwirkungen zu testen, selbst in einer Unit -Testumgebung.

    Der einfachste Weg, die API -Interaktionen zu testen, basiert auf der gefälschten Serverfunktionalität von Sinon.js. Leider ist diese Funktionalität nur (derzeit) in der Browser -Implementierung von Sinon verfügbar. Es wird ausdrücklich von der Implementierung von Node.js ausgeschlossen. Es gibt einige Hacks, die es in Node.js zum Laufen bringen, aber diese Hacks sind ziemlich spröde und verlassen sich auf interne Implementierungsdetails. Es wäre am besten, sie nach Möglichkeit zu vermeiden. Glücklicherweise können wir ohne Sinons gefälschten Server auskommen.

    Das Geheimnis besteht darin, zu wissen, dass Backbone auf Jquerys $ .ajax () -Funktion zur Implementierung von REST -APIs angewiesen ist. Wir können die API -Wechselwirkungen abfangen, indem wir diese Funktion stützen. Wenn wir die Funktion stützen, möchten wir unsere eigene Antwort ersetzen. Die Methode der Stub gibt uns genau diese Gelegenheit. Es sagt Sinon, welche zusätzlichen Maßnahmen es ergreifen sollte, wenn der Stub aufgerufen wird. Hier ist ein vollständiger Testfall, um zu überprüfen, ob unsere Sammlung sich selbst mithilfe der Rest -API initialisiert.

    <span>var sum = 2 + 2;</span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    fertig!

    Wie Sie aus dem folgenden Screenshot sehen können, haben wir jetzt Code geschrieben, der alle Unit -Testfälle übergibt. Zumindest ist die Entwicklung abgeschlossen.

    Unit -Tests Backbone.js Anwendungen Testen während der Integration

    Jetzt, da die clientseitige Entwicklung unserer App abgeschlossen ist (und wir haben die Tests, um dies zu beweisen), können wir unser JavaScript sicher in ein Quellcode-Management-System einbinden. Es kann dann in den Build -Prozess für die gesamte Anwendung integriert werden. Als Teil dieses Prozesses möchten wir alle von uns entwickelten Testfälle ausführen. Dadurch wird sichergestellt, dass der Code, der die endgültige Bereitstellung ausmacht, alle von uns definierten Tests besteht. Es wird auch vor „kleinen Verbesserungen“ zu dem Code schützen, der versehentlich neue Fehler einführt.

    Während des Erstellungsprozesses möchten wir unsere Tests wahrscheinlich eher aus der Befehlszeile als in einem Webbrowser ausführen. Wir brauchen nicht die Details einzelner Testfälle, sondern nur eine Zusicherung, dass sie alle bestehen. Node.js macht es einfach genug, diese Anforderung zu erfüllen. Wir müssen nur einige kleine Ergänzungen zu unseren Quellcode- und Unit -Testcode -Dateien vornehmen.

    Unser Code benötigt diese Modifikationen, da Node.js globale Variablen unterschiedlich behandelt als Webbrowser. In einem Webbrowser sind JavaScript -Variablen standardmäßig global im Bereich. Node.js dagegen beschränkt Variablen standardmäßig auf ihr lokales Modul. In dieser Umgebung kann unser Code nicht in der Lage sein, die von ihm benötigten Bibliotheken von Drittanbietern zu finden (JQuery, Undercore und Backbone. Wenn wir zu Beginn die folgenden Aussagen hinzufügen Wir haben diese Aussagen so konstruiert, dass sie im Webbrowser keinen Schaden zufügen, damit wir sie dauerhaft im Code lassen können.

    Wir müssen auch unseren Testcode anpassen. Die Testskripte benötigen Zugriff auf ihre eigenen Bibliotheken (JQuery, Chai, Sinon.js und Sinon-Chai). Darüber hinaus müssen wir ein wenig zusätzlich hinzufügen, um das DOM -Browser -Dokumentobjektmodell (Webbrowser) zu simulieren. Erinnern Sie sich daran, dass unsere Tests zum Klicken auf die Klickhandhabung der Webseite vorübergehend ein „Fixture“
    hinzugefügt haben. Node.js hat natürlich normalerweise keine Webseite. Mit dem JSFom -Knotenpaket können wir jedoch einen emulieren. Der folgende Code erstellt eine minimale, simulierte Webseite für unsere Tests.
    assert<span>.equal(sum, 4, "sum should equal 4");</span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    <span>var sum = 2 + 2;</span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    Die Bedingung, die diese Anweisungen testet, um festzustellen, ob wir in der node.js -Umgebung anstelle eines Webbrowsers ausgeführt werden. In einem Browser sind die zusätzlichen Aussagen nicht erforderlich, sodass wir sie sicher überspringen können.

    Mit diesen Änderungen können wir die vollständige Testsuite aus der Befehlszeile ausführen. Navigieren Sie einfach zum Stammordner des Projekts und führen Sie den Befehl Mokka aus. Das Ergebnis sieht ziemlich vertraut aus.

    Unit -Tests Backbone.js Anwendungen

    Natürlich gibt Mokka ein Ausstiegsniveau zurück, um anzugeben, ob alle Tests bestanden haben oder nicht. Dadurch automatisieren wir die Tests im Rahmen eines kontinuierlichen Integrationsprozesses oder einfach als lokales Skript vor dem Kommunikation, um unsere eigene Gesundheit zu erhalten.

    Schlussfolgerung

    Zu diesem Zeitpunkt haben wir unsere Ziele erreicht. Wir haben eine Unit -Testumgebung, die während der Entwicklung im Hintergrund läuft und uns sofort benachrichtigt, wenn ein Test fehlschlägt. Die Tests werden in einem Webbrowser durchgeführt, sodass wir den vollen Zugriff auf die Entwicklungstools des Browsers haben, während wir codieren. Die gleichen Tests werden auch gleich gut aus einem Befehlszeilenskript ausgeführt, sodass wir ihre Ausführung während des Erstellungs- oder Integrationsprozesses automatisieren können.

    Ressourcen

    Hier sind die im Artikel verwendeten Testressourcen der Haupteinheiten.

    • Befehlszeile JavaScript Ausführungsumgebung: node.js
    • JavaScript Unit Testing Framework: Mocha
    • Umgebung für Testentwicklung: test’em
    • JavaScript Assertion Library: Chai Assertion Library
    • Spione, Stubs und Mocks: Sinon.js
    • Zusätzliche Behauptungen: Sinon.js Behauptungen für Chai

    häufig gestellte Fragen (FAQs) auf Unit -Tests Backbone.js Anwendungen

    Was ist die Bedeutung von Unit -Tests in Backbone.js -Anwendungen? Es umfasst das Testen einzelner Komponenten der Software, um sicherzustellen, dass sie wie erwartet funktionieren. Dies hilft bei der Identifizierung und Behebung von Fehler frühzeitig im Entwicklungsprozess und spart so Zeit und Ressourcen. Darüber hinaus erleichtert Unit -Tests das Refactoring von Code, da Entwickler Änderungen am Code vornehmen und schnell überprüfen können, ob die Änderungen vorhandene Funktionen unterbrochen haben. Es verbessert auch das Design des Codes, da das Schreiben von Tests häufig zu einer besseren Modularisierung und einem hohen Kohäsion von Code führt.

    Wie können Unit -Tests in Backbone.js mit anderen JavaScript -Frameworks vergleichen? Backbone.js zeichnet sich jedoch aufgrund seiner Flexibilität und Einfachheit aus. Es ist nicht vorgesehen, wie Ihre Anwendung strukturiert werden soll, sodass Entwicklern die Freiheit, ihre Anwendungen so zu gestalten, wie sie es für richtig halten. Diese Flexibilität erstreckt sich auf Unit -Tests und ermöglicht es Entwicklern, ihre bevorzugten Testwerkzeuge und -methoden auszuwählen. Darüber hinaus hat Backbone.js einen kleineren Fußabdruck im Vergleich zu anderen Frameworks, sodass es für die Testtests schneller und effizienter wird. sind mehrere Tools für Unit -Tests in Backbone.js zur Verfügung. Einige der beliebten sind Mokka, Jasmine und Scherz. Mokka ist ein featurereiches JavaScript-Test-Framework, das Entwicklern eine einfache Möglichkeit bietet, ihre Anwendungen zu testen. Jasmine ist ein verhaltensgetriebenes Entwicklungsrahmen zum Testen von JavaScript-Code. Es stützt sich nicht auf Browser, DOM oder ein JavaScript -Framework, was es ideal zum Testen von Backbone.js -Anwendungen macht. Scherz hingegen ist eine umfassende Testlösung mit Schwerpunkt auf Einfachheit und Unterstützung für große Webanwendungen.

    Wie schreibe ich Unit -Tests für Backbone.js -Anwendungen? Tests für Backbone.JS -Anwendungen umfassen das Erstellen von Testfällen für jede Komponente der Anwendung. Dies umfasst Modelle, Ansichten und Sammlungen. Jeder Testfall sollte eine spezifische Funktionalität der Komponente abdecken und von anderen Testfällen unabhängig sein. Sie können Test -Frameworks wie Mokka oder Jasmine verwenden, um Ihre Tests zu schreiben. Diese Frameworks bieten Funktionen zum Definieren von Testfällen, zum Aufbau von Testumgebungen und zum Vorgehen. JS hängt vom von Ihnen verwendeten Test -Framework ab. Wenn Sie beispielsweise Mokka verwenden, können Sie Ihre Tests mit dem MOKA-Befehlszeilen-Tool ausführen. Wenn Sie Jasmine verwenden, können Sie Ihre Tests mit dem Jasmine Command-Line-Tool ausführen. Diese Tools bieten Optionen, um einzelne Testfälle, ganze Testsuiten oder alle Tests in Ihrer Anwendung auszuführen. Sie liefern auch detaillierte Berichte über die Ergebnisse der Tests, einschließlich der Anzahl der bestandenen, fehlgeschlagenen und übersprungenen Tests. Automatisieren Sie Unit -Tests in Backbone.js. Bei der Automatisierung wird ein CII -System (Continuous Integration) eingerichtet, das Ihre Tests automatisch ausführt, wenn Änderungen am Code vorgenommen werden. Dies stellt sicher, dass alle durch die Änderungen eingeführten Fehler sofort gefangen werden. Es stehen mehrere CI -Tools zur Verfügung, wie Jenkins, Travis CI und Circleci, die JavaScript unterstützen und zur Automatisierung von Unit -Tests in Backbone.js.

    verwendet werden können.

    Was sind einige Best Practices für Unit -Tests in Backbone.js? und alle möglichen Kantenfälle testen. Es ist auch wichtig, Tests zu schreiben, bevor Sie den tatsächlichen Code schreiben, einer Praxis, die als Test-gesteuerte Entwicklung (TDD) bezeichnet wird. Dies stellt sicher, dass Ihr Code prüfbar ist und Ihnen hilft, eine bessere Software zu entwerfen. Bericht, um die Ursache des Versagens zu ermitteln. Die meisten Test -Frameworks bieten detaillierte Fehlermeldungen, mit denen Sie das Problem bestimmen können. Sie können auch Debugging -Tools wie Chrome Devtools oder Node.js Debugger verwenden, um Ihren Code zu durchlaufen und Variablen und Funktionsaufrufe zu überprüfen. > Ja, Sie können Mocks und Stubs in Unit -Tests Backbone.js verwenden. Mocks und Stubs sind gefälschte Objekte, die das Verhalten realer Objekte simulieren. Sie werden verwendet, um die vom Rest des Systems getestete Komponente zu isolieren. Dies macht Tests zuverlässiger und einfacher zu schreiben. Es sind mehrere Bibliotheken verfügbar, wie z. B. Sinon.js, die Funktionen zum Erstellen und Verwalten von Mocks und Stubs bieten. Die Leistung von Unit -Tests in Backbone.js beinhaltet die Optimierung Ihrer Tests und Ihrer Testumgebung. Dies umfasst das Schreiben effizienter Tests, die schnell ausgeführt werden, Tests parallel ausführen und ein schnelles Test -Framework verwenden. Sie können auch Profiling -Tools verwenden, um langsame Tests und Engpässe in Ihrem Testprozess zu identifizieren.

  • Das obige ist der detaillierte Inhalt vonUnit -Tests Backbone.js Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Neueste Artikel des Autors
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage