Karma Tests mit AngularJS &# 43; RequireJS

Veröffentlicht Mi, 11. Februar 2015 von Monica

Einstellen Prüfung bis in der Regel ein wenig schmerzhaft - aber Testung, wenn Sie irgendeine Art von seltsamen Angular + Setup verwenden erforderlich ist noch schlimmer! Darüber hinaus ist die Karma-Dokumentation ein wenig knapp, so ist es schwer, genau zu sagen, welche Kombination von Konfigurationseinstellungen werden Ihnen Ihr gewünschtes Ergebnis bekommen. Hier ist, wie ich dies erreicht.

Hier ist eine typische, Beispielhierarchie. Mein Top-Level-Verzeichnis ist so etwas wie / opt / some-App. Da jedoch werden alle Konfigurationen relative Pfade verwenden, ist dies nicht wirklich wichtig. Alles, was Sie wissen müssen, ist, dass mein Projekt Wurzel enthält „app9rdquo; als ein Unterverzeichnis.

Wie Sie wahrscheinlich ableiten kann, für diesen Beitrag werde ich diskutieren, wie wir einen Filter testen werden, die in unserer App verwendet wird. Als nächstes wollen wir hier bei den Schlüsseldateien im Spiel aussehen:

  • my_filter.js Der Filter wir testen wollen.
  • my_filter_spec.js Die Datei mit unseren Tests darin.
  • app.js Unser Winkelmodul.
  • karma.conf.js Konfigurationsdatei, die den Karma-Server sagen, welche Dateien zu sehen und zu dienen.
  • main.js vs. Test-main.js Main.js ist unsere App echte Requirejs Konfiguration, die wir so gut wie möglich in Test-main.js spiegeln wollen, so dass alle unsere definieren Aussagen, die auch in unseren Tests arbeiten in unseren App arbeiten.

Einrichten Angular Module mit Erfordern

Im Allgemeinen ist die Sache zu erinnern, dass, wenn Sie etwas testen wollen, jede AMD-Modul die Funktion, die Sie testen möchten zurückkehren müssen, also können wir es später injizieren. Ich werde annehmen, dass Sie haben bereits eine Art von Arbeits Angular + Setup erforderlich, die Sie testen möchten, und werden die Details Bootstrapping Ihr Kernwinkelmodul beschönigen. Hier ist nur ein kleines Beispiel eines „requireable9rdquo; Winkelmodul und ein Filter.

1. Überprüfen Sie die main.js für Ihre Erfordern Setup Ich werde Sie mit Erfordern, vertraut sind, zu übernehmen und nur die Teile des Requirejs Setup zu diskutieren, die wir brauchen Tests zu arbeiten.

Sie sehen also, doch sagen wir in Skripte starten Erfordern suchen / automatisch, so auf diese Weise, wenn wir ein neues Modul zu definieren, beginnen erforderlich zu lösen, wo sie suchen für eine Datei als Abhängigkeit umfassen durch diese baseUrl verwenden.

2. Definieren Sie ein Modul Dies ermöglicht es uns, Komponenten auf ein Modul zur Laufzeit zu definieren. Sobald wir dieses Modul zu erstellen, werden wir in der Lage sein, es zu schließen überall definieren mit ([ ‚App‘], function () < . >), Weil main.js, dass „app9rdquo weiß; wirklich bedeutet „scripts / app.js9rdquo ;.

3. Erstellen Sie einen Filter, registrieren Sie es auf dem Modul

Okay, so jetzt haben Sie die drei wichtigsten „normal9rdquo; Komponenten für dieses Beispiel benötigt:

Jetzt sind wir die „testing9rdquo schaffen; Pendants:

... und natürlich die Karma-Konfiguration selbst.

Jetzt ist eine gute Zeit, Karma und seine variable Komponenten zu installieren, wenn Sie nicht bereits haben.

Sie können nun auf app / Test / und Lauf navigieren:

Wenn eine der Eingabeaufforderungen Sie fragt, ob Sie verwenden RequireJS, sagen JA. karma.conf.js und Test-main.js: Damit wird die Grundlagen unserer zwei wichtigen Konfigurationsdateien erzeugen. Natürlich werden sie nicht arbeiten aus der Box, aber wir werden es bekommen.

Beginnen Sie mit karma.conf.js öffnen. Diese Datei hat eine Reihe von interessanten Einstellungen, die wir wiederum diskutieren. Zuerst werde ich Ihnen die Arbeitskonfiguration für unser Beispielprojekt zeigen:

Am wichtigsten ist, kümmern wir uns um basePath. Das wollen wir die Route unseres Projektes sein, so dass Karma kann unsere Winkel Dateien, Herstellerdateien und Testdateien finden, und dienen ihnen zu verlangen,. Dies ist der kritische Punkt. Nur Dateien, die von Karma bedient werden können während des Tests gefunden werden, wenn erforderlich versucht, Ihre Abhängigkeiten an einem Strang ziehen. Aus diesem Grunde haben wir zum Beispiel die folgende Zeile in Dateien haben:

Denn ohne diese, wenn wir Setup-Test-main.js, werden wir bekommen 404 des Warnen, wenn versucht Eckige zu laden. In der Regel jede Datei, die Sie testen wollen, oder dass eine Abhängigkeit von einer Datei, die Sie testen wollen, müssen bis von Karma abgeholt werden durch einen Eintrag in „files9rdquo ;. passende

Ich erhöhte die logLevel so werden wir eine ausführlichere Ausgabe während der Fehlersuche erhalten, und wandte sich Autowatch zu wahren, so dass Änderungen an Test main.js aufgenommen werden. Wenn Sie Änderungen an karma.conf.js machen, werden Sie Karma töten müssen und starten Sie den Vorgang erneut dafür, diese Änderungen zu berücksichtigen.

Zeit für den ersten Test! Versuchen Sie Karma mit der Konfigurationsdatei ausgeführt wird. Es sollte eine biiiiig lange Liste aller Dateien ausspucken, dass Sie ihm gesagt haben (vor allem wegen der config.LOG_DEBUG Einstellung) zu dienen.

Sie sollten Ausgabe erhalten, die besagt, dass es Ihre Konfigurationsdatei geladen. Wenn Sie eine Fehlermeldung erhalten, dass es die Konfigurationsdatei nicht finden konnte, stellen Sie sicher, dass Sie den Dateipfad nach „Karma Start“ richtig ist. Ich verwende diese von meinem Top-Level-Verzeichnis (/ opt / some-app).

Jetzt können Sie Ihren Browser unter http öffnen: // localhost: 9876. Wenn Ihr Karma Startbefehl noch ausgeführt wird, sollten Sie eine fröhliche grüne Banner am oberen Rand des Bildschirms sehen.

Denken Sie an Test-main.js als eine Möglichkeit der main.js zum Zweck der Prüfung zu überschreiben. Auf diese Weise werden alle Ihre Dateien behalten die gleichen Aussagen definieren, aber sie sind tatsächlich für den Zweck der Prüfung „woanders suchen“.

Das wichtigste zuerst: Der Standard Karma + requirejs Setup ist falsch. Insbesondere entscheidet die Art und Weise es, wie die Dateien sollte formatiert werden deps weitergegeben werden. Sie werden eine Funktion namens fileToModule sehen. LÖSCHE ES. Dieser versucht, die Js Erweiterung Ihrer Testdateien zu kürzen, was wir es tun eigentlich nicht wollen, weil Karma tatsächlich eine HTTP-Anforderung für my_filter_spec machen statt my_filter_spec.js. Versuchen Sie stattdessen zum Sammeln der Testdateien:

Der nächste wichtige Teil dieser Datei ist baseUrl. Dies ist eine lange lange loooong verlorenen Geschwister basePath in karma.conf.js - es ist schwer, sich vorzustellen, wenn man sie suchen, aber sie arbeiten zusammen auf geheimnisvolle Weise.

Für uns funktioniert die folgende Paarung:

Dies liegt daran, Karma ist unser gesamtes Top-Level-Verzeichnis auf / Basis dient. Also, unsere normalen main.js spiegeln, die baseUrl hat: '/ scripts', in Test-main.js wir setzen '/ base / app / scripts'. So in unseren beiden Konfigurationen für Require.js erfordern wird mit unserem „scripts / 9rdquo; Ordner als Ausgangspunkt.

Nach dieser Logik können wir neu definieren, wo wir unsere Wege in Test-Haupt aus kommen wollen:

Nun bedeutet dies, wenn wir eine Datei mit dem folgenden Header haben:

Wenn es verwendet main.js geladen „path / to / somewhere9rdquo; // localhost: 8080 / scripts / path / to / irgendwo von Ihrem normalen Webserver http wird geladen. Wenn der Test-main.js verwendet, wird die gleiche Datei http erfordern: // localhost: 9876 / base / app / scripts / path / to / irgendwo von Karma. Bedeutung kann der Code für die Ausführung der Anwendung oder für die Prüfung, ohne Änderungen der Abhängigkeit Pfade in einzelnen Dateien verwendet werden!

Nun kommen wir endlich zu versuchen, alles zusammen mit unserer ersten Spec-Datei zu binden. Beginnen Sie mit der Installation von Winkeln Mocks ab, da dies ermöglicht uns, unsere Filter zu registrieren, bevor wir es testen.

Fügen Sie diese auf Ihre Test main.js Datei unter „paths9rdquo ;:

Sobald wir angularMocks als Abhängigkeit sind, werden wir angular.mock auf unserer Instanz Winkel haben. Wir können diese verwenden, um Komponenten im laufenden Betrieb zu konstruieren, wie wir testen.

Jetzt ist es Zeit, um das Karma unserer Tests beginnen !! Sie sollten eine sehr spannende Meldung:

Wenn dies funktioniert, können Sie voran gehen und einen echten Test schreiben:

Natürlich ist dies nur die Spitze des Eisbergs, und es gibt viel mehr Arbeit eine gut getestet Codebasis mit einer Kombination aus Winkel- und erfordern haben getan werden. Hier sind einige zusätzliche Ressourcen auf die Arbeit mit Unit-Tests in einem Winkel + Umgebung erforderlich:


guild wars 2 exotische Karma Anbieter Taktiker deathstrider

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 Exotic Karma Vendor Taktiker Deathstrider MP3, Video and Lyrics

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 Exotic Karma Vendor Taktiker Deathstrider MP3, Video and Lyrics

Herunterladen, Hören und Sehen kostenlos ★ Guild Wars 2 ★ - L80 Karma Vendors MP3, Video und Text

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 - Tempel des Balthazar Karma Vendor - so teuer MP3, Video and Lyrics

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 Exotic Karma Vendor Lichtsurefoot MP3, Video and Lyrics

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 Exotic Karma Vendor Historian Vermoth MP3, Video and Lyrics

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 | Tempel der Lyssa Karma Armors MP3, Video and Lyrics

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 - Opening 1000 - Lost Orrian Schmuckschatullen MP3, Video und Text

Herunterladen, Anhören und kostenlos GW2 TA UU Weg exp Lauf MP3 ansehen, Video und Text

Herunterladen, Anhören und kostenlos Guild wars2 Exotic Rüstung Karma Vendor Keeper Jonez Deadrun MP3 ansehen, Video und Text

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 Exotic Karma Rüstung Vendor Crusader Benson / Warmaster Benson MP3, Video and Lyrics

Herunterladen, Anhören und kostenlos GW2 ansehen - Karma, Karma Merchants und die Trading Post mit. MP3, Video and Lyrics

Herunterladen, Hören und Sehen kostenlos Karma Vendor MP3, Video and Lyrics

Herunterladen, anhören und ansehen kostenlos Guild Wars 2-Piraten-Puzzle Fast Track & Piraten-Karma-Gang MP3, Video and Lyrics

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 | Karma Steigerung Trick !! MP3, Video and Lyrics

Herunterladen, Anhören und kostenlos Sharkmaw Caverns Karma Vendor MP3 ansehen, Video und Text

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 Dämmerung Arbor FF Weg exp run.wmv MP3, Video and Lyrics

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 - Opening 1000 - Lost Orrian Schmuckschatullen Google Sheets MP3, Video and Lyrics

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 - Wie der Krieger / Wächter bekommen "Ausbesserung" Rüstungsset MP3, Video und Text

Herunterladen, anhören und ansehen kostenlos Guild Wars 2 - Set Armageddon PvP MP3, Video und Text

Herunterladen, Hören und Sehen free [GW2 - Ingenieur] "Nowhere to Hide" Achievement (How-to in weniger als 7s) MP3, Video and Lyrics