So schreiben Sie leistungsstärkere Komponententests mithilfe von Wertbehauptungen

Unit-Tests sind fantastisch. Durch das Schreiben von Komponententests werden Fehler um 40–80% reduziert.

Aber du musst sie richtig machen. Schlecht geschriebene Komponententests können eine Codebasis ersticken und mehr Probleme verursachen, als sie lösen.

Eine Möglichkeit, Ihre Komponententests zu verbessern, ist die Verwendung von Wertbehauptungen.

In diesem Artikel erfahren Sie, was Wertbehauptungen sind und wie Sie sie verwenden können, um Ihre Tests zu verbessern.

Behauptungen verstehen

Zusicherungen sind Funktionen, die überprüfen, ob sich der Code wie erwartet verhält.

Unterschiedliche Sprachen haben unterschiedliche Konventionen. In JavaScript ist es üblich, dem Erwartungsmuster zu folgen. Hier erwarten Sie, dass eine Bedingung einem Wert entspricht.

Wir kombinieren die Erwartungsfunktion mit einer anderen Funktion, die als Matcher bezeichnet wird.

Im folgenden Beispiel wird erwartet, dass das Ergebnis von Summe (1,1) gleich 2 ist. Der toBe-Matcher überprüft, ob der Erwartungswert gleich 2 ist.

Expect (Summe (1,1)) toBe (2)

Wenn das Ergebnis von Summe (1,1) gleich 2 ist, wird die Funktion nichts tun und der Test wird bestanden. Wenn sum (1,1) nicht gleich 2 ist, gibt die Funktion einen Assertionsfehler aus und der Test schlägt fehl.

Debuggen von Assertionsfehlern

In Testframeworks werden Assertionsfehler formatiert, um das Lesen der Nachricht zu erleichtern. Durch Assertionsfehler können Sie schnell herausfinden, was im Test schief gelaufen ist.

Im Folgenden wird ein Fehler bei der Jest-Zusicherung angezeigt:

Ein Fehler der Scherzbehauptung

Aus irgendeinem Grund gab sum (1,1) 3 zurück.

Wenn wir den Code überprüfen, werden wir jemanden finden, der versehentlich zweimal b hinzugefügt wurde:

Funktionssumme (a, b) {
  Gib a + b + b zurück
}

Wir können den Fehler schnell beheben und die Summenfunktion wieder in Betrieb nehmen. Der Behauptungsfehler hat uns geholfen herauszufinden, was und wo schief gelaufen ist.

Was ist eine Wertbehauptung?

Eine Wertbehauptung ist eine Behauptung, die zwei Werte vergleicht.

Wir haben gerade eine Wertbehauptung geschrieben:

Expect (Summe (1,1)) toBe (2)

Und es erzeugte den Assertionsfehler:

Erwarteter Wert (unter Verwendung von ===): 2 Eingegangen: 3

Welche anderen Behauptungen gibt es?

Eine andere verbreitete Behauptung ist eine boolesche Behauptung.

Eine boolesche Behauptung ist eine Behauptung, die zwei boolesche Behauptungen vergleicht.

expect (add (1,1) === 2) .toBe (true)

Dies erzeugt einen booleschen Assertionsfehler:

Erwarteter Wert (mit ===): true Erhalten: false

Debuggen einer Wertbehauptung

Wertbehauptungen werfen beschreibende Behauptungsfehler auf.

Wenn ein Test mit einer Wertzusage fehlschlägt, können Sie sehen, warum der Test fehlschlägt. Dies gibt uns einen Hinweis darauf, was im Code passiert:

Warnung: Erwartet, dass "Somevalue" gleich "Some Value" ist

Sie wissen, worauf Sie im Code achten müssen, wenn ein solcher Fehler auftritt. Oh, es sieht so aus, als hätte jemand versehentlich ein Leerzeichen gelöscht.

Wertbehauptungen verbessern die Debug-Fähigkeit (ja, das ist ein Wort) von Komponententests. Anhand des Assertionsfehlers können Sie erkennen, was im Test schief gelaufen ist.

Betrachten wir einen Assertionsfehler aus einer booleschen Assertion:

Ein Jest Boolean Assertion Error

Was ist falsch gelaufen?

Das Debuggen eines Tests mit einer Booleschen Assertion dauert länger, da Sie nicht wissen, welcher Wert vom getesteten Code zurückgegeben wurde.

Dies macht boolesche Behauptungsfehler in Komponententests ziemlich nutzlos.

Wertbehauptungen schreiben

Wir wollen also Wertbehauptungen aufstellen.

Die meisten JavaScript-Testbibliotheken bieten Funktionen zum Schreiben von Wertzusagen.

Jest enthält Tonnen von nützlichen Matchern, um Wertbehauptungen zu erstellen:

.toBeGreaterThan (Nummer)
.toContain (item)
.toHaveBeenCalled ()
.toHaveProperty (keyPath, value)

Aufruf zum Handeln

Jetzt, wo Sie die Macht der Wertbehauptungen verstehen, werden sich Ihre Tests verbessern.

Komm raus und schreibe ein paar Debug-Tests!

Wenn Ihnen dieser Artikel gefallen hat, geben Sie mir bitte ein paar Klicks, damit mehr Leute ihn sehen. Vielen Dank!