JavaScript: Unit-Testing

Eigene Matcher

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Custom Matcher sind ein leistungsfähiges Werkzeug, mit dem Sie sich Ihre eigene domänenspezifische Sprache (DSL) für Ihre Tests aufbauen können.
06:13

Transkript

Jasmine bietet bereits eine ganze Menge an eingebauten Matchern. Manchmal kann es jedoch sinnvoll sein sich eigene Matcher zu schreiben. Zum Beispiel weil Sie sich eine Domän-spezifische Sprache also eine DSL aufbauen möchten oder einfach weil Sie einen Matcher benötigen, den Jasmine nicht liefert. Ich habe genau dies hier in meinem Fall hier gemacht ich habe mir einen eigenen Matcher geschrieben. Dazu bin ich wie folgt vorgegangen: Ich habe mir eine Datei "Custom matcher helper" angelegt. In dieser Datei habe ich ein Objekt erzeugt und dieses Objekt trägt den Namen "custom matchers". Wie Sie das Objekt nennen ist mein Endeffekt egal, das obliegt ganz Ihrer Namensgebung. Innerhalb dieses Objektes habe ich nun einen Matcher angelegt nämlich den "toBezero" Matcher. Dieser prüft also ob ein Wert 0 ist. Sie können innerhlab so eines Matcher- Objekts übrigens mehrere Matcher angeben, dann muss ich ja einfach ein Komma schreiben und anschließend den nächsten Matcher hier eintragen. Ich entferne das aber wieder und erkläre ihn lieber den Matcher, den ich bereits geschrieben habe. So ein Macther, der bekommt nun Zwei Argumente übergeben nämlich ein Util-Objekt und eine Custom Equality Testers Objekt. Mit diesen Objekten können Sie einige Hilfsfunktionen von Jasmine benutzen, die sie in der Dokumentation nachlesen können. Meine Funktion gibt nun ein weiteres Objekt zurück. Und diese Objekt, das hat eine Eigenschaft nämlich die Eigenschaft "compare" und die Eigenschaft" compare" die hat nun eine Funktion, an die Funktion wird auf jeden Fall der Aktuelle Wert übergeben also der den wir im expect Bereich definieren, wir könnten hier aber noch einen zusätzlichen Werten übergeben nämlich den, den wir an unseren Matcher übergeben, falls wir dort ein Argument haben, in meinem Fall in bei dem "toBezero" Matcher möchte ich kein weiteres Argument übergeben, deswegen bekomme ich hier nur den in der Expectation eigentlich übergebenen Wert hinein. Diese Funktion "compare", die muss nun ein Objekt zurückgeben, was zumindest die Eigenschaft "pass" hat. Und genau dieses Objekt das baue ich hier in der Zeile 5 auf, ich sage also meine results was ich hier unten auch zurückgebe, ist ein Objekt mit einer Eigenschaft "pass". Und diese Eigenschaft "pass" die ist entweder True oder False. Und zwar sie dann true wenn ich 0 übergebe wenn diese Bedingung also wahr ist, und sie ist false, wenn ich etwas anderes als 0 übergebe. Anschließend kann ich noch eine Nachricht angeben. Ich überprüfe also ab results pass true oder false ist. Falls es false ist gebe ich die Meldung zurück, expected und dann (inaudible), also der übergebene Wert, zum Beispiel 5 "toBezero", das ist dann die Fehlermeldung, die in der Konsole erscheint. Ich habe außerdem noch hier oben eine Fehlermeldung und das sieht im ersten Moment etwas eigenartig aus nämlich für den Fall dass alles gut läuft, dass der Matcher Durchläuft, gebe ich hier auch eine Meldung an, nämlich ich erwartete, dass der aktuelle Wert nicht 0 ist und dieses "not", das leitet Sie schon die richtige Richtung, dass hier jetzt also die Nachricht die ausgegeben wird wenn unser Matcher über ein "not" negiert wird. Gucken wir uns das Ganze einmal jetzt in einem Beispiel an, ich wechsel zurück in eine vorbereitete Spec Datei und in dieser Spec Datei lege ich nun eine neue Spec an nämlich die "it" Custom zero matcher nenne ich das mal. Und hier benötige ich nun meine Funktion und dieser Funktion sage ich "expect". Zero To be Zero. Wenn ich das Ganze jetzt speichere und den Test ausführe und war lautet die Fehlermeldung To be Zero is not a function. Damit ich diesen neuen Matcher benutzen kann, muss ich Ihnen zunächst einmal registrieren. Dazu... rufe ich am globalen Jasmine Objekt die Methode "at matches" auf und übergebe hier custom matchers, das ist also genau das Objekt, was ich hier erstellt haben, wenn das anders heißen wird, dann müsste ich also auch hier einen anderen Namen benutzen, wenn ich jetzt speichere, dann sehen Sie dass mein Test Erfolgreich durchgelaufen ist, wir können das einmal prüfen, indem ich sage expect Want to be Zero. Dann sagt er mien Custom Zero Matcher Ist fehlgeschlagen. Und hier kommt dann meine definierte Fehlermeldung, (inaudible), indem ich ein "not" dazwischen schreibe. Dann sollte der Test wieder durchlaufen und wenn ich hier nun eine Null herein schreibe dann sehe ich die andere Fehlermeldung. Also die, die wir im oberen Bereich haben. Ich korrigiere das Ganze schnell dann schauen wir uns nochmal an, was wir hier hier überhaupt gesehen haben. Wie wi gesehen haben, können wir relativ einfach eigene Matcher definieren. Diese Matcher können beliebigen Namen haben und erlauben es dadurch eine eigene DSL aufzubauen also an eigene Domain specific language. Um so einen Matcher zu definieren, legen Sie sich typischerweise eine Datei an (inaudible) und diese Datei haben sie ein Objekt, dieses Objekt hat dann Mehrere Funktionen, diese Funktionen sind jeweils immer ein eigener Matcher. (inaudible) eine Funktion. Alle Funktionen werden zwei Hilfsobjekt übergeben, nämlich Util und die Custom Quality Tester. Als Rückgabe geben wir ein Objekt zurück welches eine Funktion compare beinhaltet. Die Funktion compare wiederum gibt ein Objekt zurück mit der Eigenschaft pass. Das ist True oder False und eine Eigenschaft Message. Sobald wir das erledigt haben, können wir unser neuen Matcher registrieren und ihn anschließend benutzen.

JavaScript: Unit-Testing

Steigen Sie in die Grundlagen des Unit-Testings ein und sehen Sie, wie Sie mit dem Jasmine-Framework Ihren JAvaScript-Code professionell testen können.

2 Std. 7 min (21 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:19.05.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!