Kursinhalt
Einführung in die QA-Automatisierungstests
Einführung in die QA-Automatisierungstests
Häufige Matcher
In diesem Kapitel werden wir uns einige gängige Matcher ansehen, die zum Testen verschiedener Arten von Werten verwendet werden können.
Arrays und Objekte abgleichen
Der toEqual
Matcher vergleicht zwei Elemente auf einer tiefen Ebene. Daher ist er nützlich zum Abgleichen von Strukturen wie Array oder vielleicht einem Object:
Tiefenprüfung
Die Methode toContain
überprüft, ob das übergebene Array einen bestimmten Wert enthält:
Die Methode toContainEqual
wird für komplizierte Arrays verwendet, um tiefe Vergleiche durchzuführen:
Übereinstimmung von Zeichenfolgenmustern
Die Methode toMatch
wird auch zum Abgleichen von Zeichenfolgen verwendet:
Dieser Matcher vergleicht die beiden Zeichenfolgen nicht genau, sondern sucht nach einem Substring innerhalb der ursprünglichen Eingabe. Daher besteht auch die folgende Assertion:
Tatsächlich akzeptiert die Methode toMatch
einfach einen Regulären Ausdruck (RegEx), der nach dem angegebenen Muster im ursprünglichen Eingabestring sucht.
Ein Substring oder einfacher Text ist ein gültiger RegEx-Ausdruck, daher sucht das einfache Schreiben von World
nach dem Begriff World
im Eingabestring, und es passt, weil "World" ein Substring von "Hello World" ist.
Ein Regulärer Ausdruck ist einfach eine Zeichenfolge, die verwendet wird, um ein bestimmtes Muster darzustellen. Reguläre Ausdrücke werden verwendet, um effizient nach Textstücken zu suchen, die einem gewünschten Muster entsprechen. Die meisten Programmiersprachen wie Python und JavaScript verfügen über integrierte Unterstützung für Reguläre Ausdrücke, und Sprachen, die keine integrierte Unterstützung haben, verfügen über externe Bibliotheken, die installiert werden können, um Unterstützung für Reguläre Ausdrücke hinzuzufügen.
Regex folgt einer spezifischen Syntax, genau wie Programmiersprachen. Es ist nicht notwendig, Reguläre Ausdrücke zu lernen, um in diesem Kurs voranzukommen, jedoch können wir uns ein Beispiel ansehen, um zu sehen, wie Reguläre Ausdrücke im Allgemeinen nützlich sein können.
Das Muster /^[a-m]{5}$/
überprüft, ob der Eingabestring 5 Zeichen lang ist und nur Kleinbuchstaben von 'a' bis 'm' enthält.
Reguläre Ausdrücke sind ziemlich robust und können verwendet werden, um nach jeder Art von Muster zu suchen. Zum Beispiel überprüft das Muster /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/
, ob der Eingabestring eine gültige E-Mail ist.
Überprüfung auf `null` und `undefined`
Um zu überprüfen, ob ein Wert null
ist, können wir keine der vorherigen Matcher verwenden, da null weder eine Ganzzahl, eine Struktur noch ein String ist. In diesem Fall verwenden wir den Matcher toBeNull, der kein Argument akzeptiert:
JavaScript hat auch das Schlüsselwort undefined
. Wir können überprüfen, ob ein Wert undefined ist, indem wir den Matcher toBeUndefined
verwenden:
Es gibt auch einen Matcher, um das Gegenteil zu überprüfen. Der toBeDefined
Matcher überprüft, dass der Zielwert definiert ist.
Überprüfung von Booleschen Werten & Wahrheitswerten
Um zu überprüfen, ob ein Wert True
oder False
ist, verwenden wir die Methoden toBeTruthy
und toBeFasly
:
Diese Methoden überprüfen die „Wahrheit“ oder „Falschheit“ eines Wertes. Jeder Wert, der innerhalb einer if-Bedingung als True
betrachtet würde, ist ein Thuthy-Wert, andernfalls ist es ein Falsy-Wert.
In diesem Fall wird "turthy" ausgegeben, was darauf hinweist, dass 10
ein wahrer Wert ist. Im Gegensatz dazu wird beim Ersetzen von 10
durch eine 0
oder einen leeren String (''
) "falsy" ausgegeben.
Überprüfen auf Ausnahmen
Wir können auch überprüfen, ob eine bestimmte Ausnahme von einer Funktion ausgelöst wurde, indem wir den toThrow-Matcher verwenden.
Angenommen, wir haben die klassische factorial
-Funktion, die eine Ausnahme auslöst, wenn eine ungültige Eingabe an die Funktion übergeben wird:
Wir können den toThrow
Matcher verwenden, um zu testen, ob die Funktion tatsächlich einen Fehler / eine Ausnahme bei ungültiger Eingabe auslöst:
Die toThrow
Methode akzeptiert ein Argument, das der Textinhalt der erwarteten Ausnahme sein soll. Da sie den Text der ausgelösten Ausnahme vergleicht, sollte daher der genaue Text der erwarteten Ausnahme in der toThrow
Methode übergeben werden.
Negation
Wir können Matcher auch negieren, indem wir den Matcher nach einem not
verketten:
1. Was ist der Zweck des toEqual Matchers in Jest?
2. Welchen Matcher würden Sie verwenden, um zu überprüfen, ob ein Array ein bestimmtes Objekt mit übereinstimmenden Eigenschaften enthält?
3. Wann würden Sie den Matcher toMatch verwenden?
4. Wie überprüfen Sie, ob eine Funktion eine Ausnahme mit einer bestimmten Nachricht auslöst?
Danke für Ihr Feedback!