Dies ist wahrscheinlich nicht das erste Tutorial zum Testen, das Sie jemals gesehen haben. Aber vielleicht hatten Sie Ihre Zweifel beim Testen und haben sich nie die Zeit genommen, sie zu lesen. Immerhin kann es ohne Grund als zusätzliche Arbeit erscheinen.
Dieses Tutorial soll Ihre Ansichten ändern. Wir fangen ganz am Anfang an: Was testen wir und warum sollten Sie es tun? Dann sprechen wir kurz über das Schreiben von testfähigem Code, bevor Sie tatsächlich Tests durchführen! Lasst uns anfangen!
Recht einfach, testen Dies ist die Idee einer Reihe von Anforderungen, die ein bestimmter Code erfüllen muss, um robust genug zu sein, um in der realen Welt verwendet zu werden. Häufig schreiben wir etwas JavaScript, öffnen es dann im Browser und klicken ein wenig herum, um sicherzustellen, dass alles wie erwartet funktioniert. Obwohl dies manchmal notwendig ist, ist es nicht die Art von Tests, über die wir hier sprechen. In der Tat hoffe ich, dass dieses Tutorial Sie davon überzeugen wird, dass schnelle und schmutzige Selbsttests ein strengeres Testverfahren ergänzen sollten: Selbsttests sind in Ordnung, aber eine gründliche Liste von Anforderungen ist von größter Bedeutung.
Wie Sie sich vorstellen können, ist das Problem beim JavaScript-Test zum Aktualisieren und Klicken ein doppeltes Problem:
Durch schreiben Tests Wenn Sie alles überprüfen, was Ihr Code tun soll, können Sie überprüfen, ob Ihr Code in bestem Zustand ist, bevor Sie ihn auf einer Website verwenden. Wenn tatsächlich etwas in einem Browser ausgeführt wird, gibt es wahrscheinlich mehrere Fehlerquellen. Durch das Schreiben von Tests können Sie sich auf jedes zu prüfende Teil einzeln konzentrieren. Wenn jedes Teil seine Arbeit richtig macht, sollten die Dinge ohne Probleme zusammenarbeiten (das Testen einzelner Teile wie diesem wird als Einheitstest bezeichnet)..
Wenn Sie ein Programmiersprache sind, haben Sie möglicherweise in anderen Sprachen getestet. Aber ich habe Tests in JavaScript als ein anderes Tier zum Töten gefunden. Schließlich bauen Sie nicht zu viele Benutzeroberflächen in PHP oder Ruby auf. Oft machen wir DOM-Arbeit in JavaScript, und wie genau testen Sie das??
Nun, die DOM-Arbeit ist nicht das, wofür Sie Tests schreiben wollen; Es ist die Logik. Der Schlüssel ist hier natürlich, Ihre Logik und Ihren UI-Code voneinander zu trennen. Das ist nicht immer einfach; Ich habe meinen gerechten Anteil an der jQuery-basierten Benutzeroberfläche geschrieben und kann ziemlich schnell unordentlich werden. Dies macht es nicht nur schwierig zu testen, sondern auch, dass Logik und UI-Code miteinander verflochten sind, wenn sich das gewünschte Verhalten ändert. Ich habe festgestellt, dass die Verwendung von Methoden wie Vorlagen (auch Vorlagen) und pub / sub (auch pub / sub) das Schreiben von besserem, überprüfbarem Code vereinfacht.
Noch eine Sache, bevor wir mit dem Programmieren beginnen: Wie schreiben wir unsere Tests? Es gibt zahlreiche Testbibliotheken, die Sie verwenden können (und viele gute Tutorials, die Sie in ihrer Verwendung unterrichten; sehen Sie die Links als Ende). Wir werden jedoch eine kleine Testbibliothek von Grund auf erstellen. Es ist nicht so schick wie in manchen Bibliotheken, aber Sie werden genau sehen, was los ist.
Lasst uns in diesem Sinne an die Arbeit gehen!
Wir werden eine Mikro-Fotogalerie erstellen: eine einfache Liste von Miniaturansichten, auf denen ein Bild in voller Größe angezeigt wird. Aber zuerst bauen wir die Testfunktion aus.
Wenn Sie mehr über das Testen und Testen von Bibliotheken erfahren, finden Sie zahlreiche Testmethoden zum Testen aller Arten von Besonderheiten. Es kann jedoch alles darauf reduziert werden, ob zwei Dinge gleich sind oder nicht: zum Beispiel,
Hier ist unsere Methode, um die Gleichheit zu testen:
var TEST = areEqual: Funktion (a, b, msg) var Ergebnis = (a === b); console.log ((Ergebnis? "PASS:": "FAIL:") + msg); Ergebnis zurückgeben; ;
Es ist ziemlich einfach: Die Methode benötigt drei Parameter. Die ersten beiden werden verglichen, und wenn sie gleich sind, werden die Tests bestanden. Der dritte Parameter ist eine Nachricht, die den Test beschreibt. In dieser einfachen Testbibliothek geben wir unsere Tests nur auf der Konsole aus. Sie können jedoch HTML-Ausgabe mit entsprechendem CSS-Stil erstellen, wenn Sie möchten.
Hier ist die areNotEqual
Methode (innerhalb der gleichen PRÜFUNG
Objekt):
areNotEqual: Funktion (a, b, msg) var Ergebnis = (a! == b); console.log ((Ergebnis? "PASS:": "FAIL:") + msg); Ergebnis zurückgeben;
Sie werden die letzten zwei Zeilen von sehen sind gleich
und areNotEqual
das Gleiche. So können wir diese so herausziehen:
var TEST = areEqual: Funktion (a, b, msg) return this._output (a === b, msg), areNotEqual: function (a, b, msg) return this._output (a! == b, msg); , _output: function (Ergebnis, msg) Konsole [Ergebnis? "log": "warn"] ((Ergebnis? "PASS:": "FAIL:") + msg); Ergebnis zurückgeben; ;
Großartig! Das Besondere daran ist, dass wir andere Methoden für Zucker hinzufügen können, indem wir die Methoden verwenden, die wir bereits geschrieben haben:
TEST.isTypeOf = function (obj, type, msg) return this.areEqual (typeof obj, type, msg); ; TEST.isAnInstanceOf = Funktion (obj, type, msg) return this._output (obj-Instanz des Typs, msg); TEST.isGreaterThan = Funktion (val, min, msg) return this._output (val> min, msg);
Sie können dies selbst ausprobieren. Nachdem Sie dieses Tutorial durchgearbeitet haben, haben Sie eine gute Vorstellung davon, wie es verwendet wird.
Also, erstellen wir mit unserem Mini eine extrem einfache Fotogalerie PRÜFUNG
Framework, um einige Tests zu erstellen. Ich möchte an dieser Stelle erwähnen, dass die testgetriebene Entwicklung zwar eine großartige Übung ist, wir werden sie jedoch nicht in diesem Lernprogramm verwenden, vor allem weil es nicht etwas ist, das Sie in einem einzigen Lernprogramm lernen können. Es braucht wirklich viel Übung, um wirklich zu funktionieren Grok. Wenn Sie anfangen, ist es einfacher, etwas Code zu schreiben und dann zu testen.
So lass uns anfangen. Natürlich benötigen wir HTML für unsere Galerie. Wir werden das ziemlich einfach halten:
Testen in JavaScript
Es gibt zwei wichtige Dinge, die es zu beachten gilt: erstens haben wir ein das hält die sehr einfache Markierung für unsere Bildergalerie. Nein, es ist wahrscheinlich nicht sehr robust, aber es gibt etwas, mit dem wir arbeiten können. Beachten Sie dann, dass wir drei anschließen
>