Operatoren für Assertions
Assertions basieren auf Operatoren. Talend Cloud API Tester stellt Ihnen eine Reihe von Operatoren zur Auswahl.
Gleichheit
Equals (Gleich) und Does not equal (Ungleich) sind die einfachsten Operatoren und führen lediglich eine Gleichheitsprüfung durch. Zum Glück ist ihnen JSON nicht bekannt. Wenn Sie folglich für JSON-Arrays verwendet werden, wird der Request nicht als ungültig erklärt, wenn die erwarteten und die tatsächlichen Arrays eine unterschiedliche Formatierung aufweisen.
Der Operator Does not equal (Ungleich) ist das genaue Gegenstück zu Equals (Gleich).
Vergleich
Verfügbare Vergleichsoperatoren:
- Greater than (Größer als)
- Greater than or equal (Größer oder gleich)
- Less than (Kleiner als)
- Less than or equal (Kleiner oder gleich)
Vergleiche werden folgendermaßen durchgeführt:
- Bei Zahlen werden die Zahlenwerte verglichen.
- Bei Zeichenfolgen wird die Länge der Zeichenfolgen verglichen.
- Bei booleschen Werten, JSON-Arrays und JSON-Objekten werden diese als Zeichenfolgen verglichen.
- Bei Null-Werten wird ein Fehler ausgegeben.
Die verglichenen Objekte müssen dasselbe Format aufweisen. Um formatbezogene Probleme zu vermeiden, können Sie zunächst eine Assertion einsetzen, um das Format der zu vergleichenden Objekte zu validieren. Verwenden Sie dazu beispielsweise einen Regex.
- Datumsangaben im Zeitstempelformat werden als Ganzzahlen gehandhabt, Datumsangaben im ISO-Format als Zeichenfolgen.
- ISO-Daten werden lexikografisch verglichen, wobei der Vergleich nur dann akkurat durchgeführt werden kann, wenn alle Daten dasselbe Format aufweisen und derselben Zeitzone angehören. Talend Cloud API Tester erzeugt Daten im ISO-Format mit der UTC-Zeitzone.
- Unter Umständen erhalten Sie falsche Ergebnisse, wenn ein Datum ein anderes Format aufweist oder Sie ein Datum mit einem anderen Werttyp vergleichen. Wenn Sie beispielsweise prüfen möchten, ob ein Datum vor einem anderen Datum liegt, dann ergibt der lexikografische Vergleich ggf., dass es sich um ein früheres Datum handelt, obwohl es tatsächlich hinter dem anderen Datum liegt, weil das Datum ein anderes Format aufweist. Aus diesem Grund wird die Verwendung von Assertions empfohlen, um vor dem Vergleich Format und Wert der Datumsangaben zu überprüfen.
Präsenz
Der Operator Exists (Ist vorhanden) prüft, ob das Element in der Antwort vorhanden ist.
Der Operator Does not exist (Ist nicht vorhanden) ist das genaue Gegenstück zu Exists (Ist vorhanden).
Länge
Folgende Längenoperatoren sind verfügbar:
- Equals (Gleich)
- Greater than or equal (Größer oder gleich)
- Less than or equal (Kleiner oder gleich)
Die Länge wird folgendermaßen verarbeitet:
- Bei Zeichenfolgen wird die Anzahl der Zeichen in der Zeichenfolge zurückgegeben.
- Bei JSON- oder XML-Arrays wird die Anzahl der Elemente im Array zurückgegeben.
- Bei JSON-Objekten wird die Anzahl der Schlüssel im Objekt zurückgegeben.
- Bei Null-, Zahlen- oder booleschen Werten wird ein Fehler zurückgegeben („N/A“).
- Bei Headern mit mehreren Werten wird die Anzahl der Werte für den Header zurückgegeben.
Inhalt
Folgende Inhaltsoperatoren sind verfügbar:
- Contains (Enthält)
- Does not contain (Enthält nicht)
Diese Operatoren funktionieren folgendermaßen:
-
Bei Zeichenfolgen wird geprüft, ob das Element die angegebene Zeichenfolge enthält.
Darth Vader enthält arth.
-
Bei JSON-Arrays wird geprüft, ob das Element alle angegebenen Werte enthält. Bei den erwarteten Werten kann es sich um ein JSON-Array oder eine kommaseparierte Werteliste handeln.
[ "Darth Vader", "Luke Skywalker", "Leia Skywalker" ] enthält "Darth Vader", "Luke Skywalker".
[ "Darth Vader", "Luke Skywalker", "Leia Skywalker" ] enthält. [ "Darth Vader" ].
-
Bei JSON-Objekten wird geprüft, ob das Element alle angegebenen Schlüssel enthält.
{ "age": 41, "lightSaberColor": "red", "forcePower": "3000" } enthält "age","lightSaberColor".
{ "age": 41, "lightSaberColor": "red", "forcePower": "3000" } enthält [ "forcePower" ].
-
Bei Arrays von XML-Knoten wird geprüft, ob das Element alle angegebenen, als Knoten-Array aufgeführten Knoten enthält.
[<title lang="en">Harry Potter</title>, <title lang="en">XQuery Kick Start</title>, <title lang="en">Learning XML</title>] enthält [<title lang="en">Harry Potter</title>, <title lang="en">Learning XML</title>].
- Bei Null-, Zahlen- und booleschen Werten: Ein Fehler wird zurückgegeben („N/A“).
Übereinstimmung von regulären Ausdrücken
Der Operator Matches (Entspricht) ermöglicht Ihnen die Prüfung, ob ein Element einem bestimmten regulären Ausdruck entspricht.
Der Operator vergleicht das Element mit gültigen regulären JavaScript-Ausdrücken. Diese können in zwei verschiedenen Formen vorliegen:
- Ohne Flags: ^Darth entspricht Darth Vader.
- Mit Flags: /^darth/i entspricht Darth Vader.
Eine vollständigere Dokumentation ist unter MDN verfügbar.
Wenn Sie mehr über die Erstellung von regulären Ausdrücken und deren Test durch einen Vergleich mit Beispielen aus der Praxis erfahren möchten, empfehlen wir Ihnen die Regex101-Website. Achten Sie dabei darauf, im linken Menü die JavaScript-Variante für Ihre regulären Ausdrücke auszuwählen.