So testen Sie Reaktionsstellen und Apps

Sep 10, 2025
wie man
Test React
(Bildkredite: Zukunft)

Wenn Sie wissen möchten, wie man reagieren soll, sind Sie an der richtigen Stelle. Kennst du wirklich, dass dein Code das tut, was es tun soll? Hast du es im Browser getestet? Was ist, wenn Sie nicht, oder Sie können nicht alles testen, und es bricht in der Produktion?

Eine Testbibliothek ist eine Gruppe von Utilities-Entwicklern, um einzelne Tests auf Anwendungskomponenten zu schreiben. Einige der Hauptteile eines Tests sind:

  • Beschreibung: beschreibt, was der Test geht
  • Verwenden / Render: verwendet die Komponente in einer Umgebung, in der er getestet werden kann
  • Verspottung: Erstellt Talend-Funktionen, damit Sie Ihre Annahmen überprüfen können

Im Laufe dieses Artikels werde ich einige Beispiele aus der React-Testing-Bibliothek erkunden, um Ihnen zu helfen, mit dieser wertvollen Möglichkeit zu beginnen, die Robustheit Ihrer Code-Ausgabe zu verbessern und sicherzustellen, dass Ihr Code nicht wirft alle bösen Überraschungen, sobald es in die Produktion geht.

Willst du nützliche Ressourcen? Hier ist ein Ablauf der Besten Webdesign-Tools. Um dabei helfen wir Ihnen, intelligenter zu arbeiten. Oder wenn Sie eine neue Maschine benötigen, versuchen Sie diese Rundung der Beste Laptops zur Programmierung . Oder wenn Sie einen neuen Standort bauen, benötigen Sie möglicherweise einen tollen Webseitenersteller .

01. Erste Schritte mit der Reaktionsprüfungsbibliothek

Ich werde Create-React-App für diese Demo verwenden, da es bereits mit der Testbibliothek vorkonfiguriert ist. Wenn Sie GATSBY oder ein benutzerdefiniertes Setup verwenden, ist möglicherweise eine Konfiguration vorhanden, die Sie durchführen müssen, bevor Sie mit der Testbibliothek verwenden.

Um zu beginnen, erstellen wir eine neue App. Wenn Sie bereits eine aktuelle Version von Node.js haben, können Sie den folgenden Befehl ausführen, ohne dass alles andere global installiert wird:

npx create-react-app netmag-javascript-testing

02. Entscheiden Sie, was testen soll

Stellen Sie sich vor, wir haben eine einfache Komponente, sagen Sie einen Knopf mit einem bestimmten Zustand. Was sind einige der Dinge, die in einer solchen Komponente testen müssen?

Das Erscheinungsbild der Komponente:

Wir möchten nicht, dass sich nichts Unerwartetes ändert, nachdem wir unsere Komponente geschrieben haben. Wir werden also einen Snapshot-Test schreiben, um zu erfassen, wie es ertippt. Wenn ändert, sehen wir es dann schnell, ohne einen manuellen oder visuellen Test. Dies ist großartig für Komponenten, die aus vielen kleineren Komponenten bestehen: Sie können schnell sehen, wann (und wo) sein Erscheinungsbild beeinträchtigt wurde.

Die verschiedenen Zweige, die rendern:

Da wir zwei oder mehr verschiedene Ausgänge haben könnten, müssen wir es testen, dass sie alle korrekt rendern, nicht nur eines von ihnen. Wir müssen also ein Click-Ereignis simulieren und haben einen weiteren Snapshot-Test für die Art und Weise, wie sie, nachdem dieser Rechenzweig ausgeführt wurde, ausgeführt wurde.

Diese Funktionen werden wie erwartet angerufen:

Wir möchten sicherstellen, dass der Code, den wir geschrieben haben, um eine andere Funktion aufzurufen, wie wir davon ausgehen, dass es davon ausgeht. Da diese Funktion jedoch eine externe Abhängigkeit ist, wollen wir das hier nicht testen. Unsere Tests sollten nur die Funktionalität einkapseln, die wir möchten.

03. Schreiben Sie Ihren ersten Test

Test React

(Bild: © Ben Lesen)

Schreiben wir unseren ersten Test. Erstellen Sie eine neue Datei angerufen Mycomponent.unit.test.js. in demselben Ordner wie die Komponente. Durch das Hinzufügen von Test.js am Ende wird es automatisch von der Testbibliothek ausgewählt. Der Inhalt dieser Datei liegt unten:

 Import reagieren von 'reagieren'
Import {Render} von '@ testing-bibliothek / reagieren'
Mycomponent von './mycomponent' importieren
beschreiben ('das & lt; Mycomponent / & gt;, () = & gt; {
    // Tests gehen hier
}) 

Das erste, was ich aufmerksam machen möchte, ist das beschreiben() Funktion, die zwei Argumente nimmt: Der erste ist eine Zeichenfolge, mit der Sie besser beschreiben können - als Textzeichenfolge - wie Ihr Test tut. In unserem Fall haben wir einfach gesagt, dass es rendern sollte. Dies ist sehr nützlich, wenn jemand anderes Ihren Code ansieht, oder Sie müssen sich daran erinnern, was Sie zu einem späteren Zeitpunkt getan haben. Das Schreiben von gutem Beschreibungsaussagen ist eine Form der Codedokumentation und einen weiteren guten Grund für das Schreiben von Tests.

Das zweite Argument ist Ihre Tests. Das beschreiben() Die Funktion leitet alle diese Tests nacheinander aus.

04. Verwenden Sie die Bereinigungsfunktion

Lassen Sie uns eine Helferfunktion einführen. Käufe () . Wir müssen dies verwenden, weil wir jedes Mal mit der Komponente etwas tun, wir möchten, dass eine frische Kopie ohne die Requisiten, ohne die wir zuvor weitergegeben hatten, noch in der Komponente bestanden hatten. Oder wir müssen möglicherweise die Komponente erneut übertragen: Käufe () Tut das für uns und wir können es die Bereinigungsfunktion weitergeben.

 Importieren {Render, Cleanup} von '@ testing-bibliothek / reagieren'
...
beschreiben ('Die Komponente sollte rendern' () = & gt; {
  Kreische (Bereinigung)
} 

05. Schreiben Sie einen Snapshot-Test

Test React

(Bild: © Ben Lesen)

In diesem Schritt gehen wir unsere Komponente "mount" (oder rendern sie).

 Beschreiben ('Die Komponente sollte rendern' () = & gt; {
  Kreische (Bereinigung)
  es ("Renders mit grundlegenden Requisiten" () = & gt; {
    Render (& lt; Mycomponent / & gt;)
  })
} 

Dieser Render gibt uns Zugriff auf alle gerenderten Eigenschaften der kompilierten Komponente. Es könnte gut sein, dies in ein einzustellen console.log () So können Sie klarer sehen, was es tut.
Wenn Sie dies tun, werden Sie sehen, dass es einige nützliche Eigenschaften gibt, die wir hier nutzen können. Ich werde eine Assertion erstellen (eine überprüfbare Erklärung stellen) und testen Sie es, indem Sie den Container extrahieren. Der Container 'enthält' die DOM-Knoten (alle HTML), die der Komponente zugeordnet sind.

 es ("mit den grundlegenden Requisiten" () = & gt; {
    const {Container} = rendern (& lt; mycomponent / & gt;)
}) 

Jetzt haben wir Zugang zum Container, wie sage ich, dass es nach meiner Behauptung gerendert wird? Indem Sie einen Snapshot-Test hinzufügen.

Denken Sie an einen Schnappschuss, der wie ein Foto ist. Es dauert zu einem bestimmten Zeitpunkt eine Momentaufnahme unserer Komponente. Wenn wir dann Änderungen an dem Code vornehmen, können wir sehen, ob es noch mit dem ursprünglichen Snapshot entspricht. Wenn dies der Fall ist, können wir zuversichtlich sein, dass sich in der Komponente nichts geändert hat. Wenn dies nicht der Fall ist, haben wir jedoch möglicherweise ein Problem entdeckt, das in einer anderen Komponente entstand, einer, die wir bisher nicht entdeckt haben:

06. Testeigenschaften

Requisiten oder Eigenschaften einer Komponente können auch mit Momentaufnahmen getestet werden. Testen Die verschiedenen Requisiten, die Sie Ihrer Komponente anbieten, geben Ihnen eine größere Abdeckung und Ihr Vertrauen. Sie wissen nie, wann eine Anforderung bedeutet, dass die Requisiten der Komponenten refaktiert sind und der endgültige Ausgang ändert sich.

Fügen Sie der Spitze Ihrer Datei das folgende Objekt hinzu:

 const lightproperties = {
    BackgroundColour: 'White',
    textcolour: 'darkblue'
} 

Wir definieren die Eigenschaften in einem Objekt und verwenden dann den Spread-Operator (drei Punkte, gefolgt vom Objektnamen: ... LightProperties) Weil wir nur ein Argument geben können, wenn wir auf diese Weise rendern. Es ist auch nützlich, um zu sehen, welche Eigenschaften Sie isoliert durchführen:

 es ("mit den grundlegenden Requisiten" () = & gt; {
        const {Container} = rendern (& lt; Mycomponent / & gt;
      )
     Erwarten (Container) .tomatchsnapshot ()
    })
    es ("Renders mit den Lichtversions-Requisiten" () = & gt; {
        const {container} = rendern (
            & lt; Mycomponent {... lightproperties} / & gt;
        )
        Erwarten (Container) .tomatchsnapshot ()
    })

07. Teständerungen in der Benutzeroberfläche

Stellen Sie sich vor, unsere Komponente hat eine Schaltfläche, und Sie möchten sicherstellen, dass etwas passiert, wenn Sie auf die Schaltfläche klicken. Sie denken vielleicht, dass Sie den Zustand der Anwendung testen möchten. Sie könnten zum Beispiel versucht sein, zu testen, dass der Status aktualisiert hat. Das ist jedoch nicht das Objekt dieser Tests.

Dies führt uns ein wichtiges Konzept in der Verwendung einer Testbibliothek: Wir sind nicht hier, um den Zustand oder die Art und Weise, wie unsere Komponente funktioniert. Wir sind hier, um zu testen, wie Menschen die Komponente verwenden und ihre Erwartungen erfüllen.

Egal, ob der Staat aktualisiert hat oder nicht, ist unerheblich; Was wir testen wollen, ist das Ergebnis dieses Tastenpresses.

Stellen Sie sich vor, wir testen das Ergebnis einer Funktion, die die Benutzeroberfläche vom dunklen Modus in den Lichtmodus ändert. Hier ist die Komponente:

 const modetoggle = () = & gt; {
    const [MODE, SETMODE] = USESTATE ['licht']
   const toggletheme = () = & gt; {
     if (theme === 'licht') {
       SETTHEME ('Dark')
     } else {
       SETTHEME ('licht')
     }
   }
    Rückkehr (
        & lt; ToggleButton Data-theTID = "MODE-TOGGLE" LightMode = {MODE} OnClick = {TOGGLemode} & gt;
          Toggle-Modus
        & lt; / ToggleButton & GT;
    )
}

Erstens sollten wir eine Test-ID auf den Knopf hinzufügen, damit wir sie in der Renderphase finden können:

 RETURN (
    & lt; ToggleButton
      Data-TestID = "MODE-TOGGLE"
      lightmode = {mode}
      Onclick = {togglemode}
     & gt;
      Toggle-Modus
    & lt; / ToggleButton & GT;

Haben Sie bemerkt, dass wir das neue Attribut hinzugefügt haben? Data-TestID. auf den Knopf? So können Sie das testen. Importieren Sie zunächst eine neue Funktion, feuern Sie aus der Testbibliothek feuere:

 Import {Cleanup,
          feuerevent,
          machen
} von '@ testing-bibliothek / reagieren'

Wir können diese Funktion verwenden, um zu testen, dass es Änderungen in der Benutzeroberfläche gibt und dass diese Änderungen konsistent sind:

 es ("mit den grundlegenden Requisiten" () = & gt; {
    const {Container} = rendern (& lt; ToggleButton / & gt;
  )
 Erwarten (Container) .tomatchsnapshot ()
})
es ("rendert die leichte Benutzeroberfläche auf Klick", () = & gt; {
    const {container, getBytestid} = rendern (& lt; ToggleButton / & gt;)
    fireevent.click (getBytestid ('Mode-Toggle'))
    Erwarten (Container) .tomatchsnapshot ()
}) 

Das ist großartig: Wir müssen nicht manuell auf die Website gehen und sich umsehen, klicken Sie auf die Schaltfläche und schauen Sie sich ein zweites Mal um - während Sie möglicherweise zugeben, dass Sie wahrscheinlich etwas vergessen oder vermissen! Jetzt können wir Vertrauen haben, dass wir mit derselben Eingabe gegeben, dass wir dieselbe Leistung in unserer Komponente erwarten können.

Wenn es um Test-IDs geht, mag ich es persönlich nicht verwenden Data-TestID. etwas im Dom finden. Nach allem ist das Objekt der Tests, um zu ahmen, was der Benutzer tut, und testen, was passiert, was passiert, wenn sie dies tun. Data-TestID. Fühlt sich an wie ein bisschen Cheat - obwohl Daten-TestIDs wahrscheinlich für Ihren QA-Ingenieur praktisch sind (siehe Boxout die Rolle der Qualitätssicherungsingenieure).

Stattdessen könnten wir verwenden getBytext () und geben Sie den Text unseres Knopfes weiter. Diese Methode wäre viel mehr Verhaltensspezifische.

08. Mock and Spion die Funktion

Manchmal müssen wir möglicherweise einen Anruf in einer Funktion testen, aber diese Funktion liegt außerhalb des Geltungsbereichs des Tests. Zum Beispiel habe ich ein separates Modul, das eine Funktion enthält, die den Wert von PI an eine bestimmte Anzahl von Dezimalzahlen berechnet.

Ich muss nicht testen, was das Ergebnis dieses Moduls ist. Ich muss testen, dass meine Funktion wie erwartet tut. Weitere Informationen darüber, warum dies ist, lesen Sie bitte die Kästcheneinheit und Integrationstests. In diesem Fall konnten wir diese Funktion "verspotten":

 const getPpivalue = jest.fn ()
es ist ('ruft die Funktion auf Click', () = & gt; {
    const {container, getBytestid} = rendern (& lt; ToggleButton / & gt;)
    fireevent.click (getBytestid ('Mode-Toggle'))
    erwarten (getPpivalue). TohaveBeenCalloteTimes (1)
  )
}) 

Die Funktion THAYBEENECALLEDTIMES () ist eine der vielen Helferfunktionen in der Testbibliothek, die uns ermöglicht

um die Ausgabe von Funktionen zu testen. Auf diese Weise können wir unsere Tests nicht nur auf das Modul scope, das wir testen möchten, sondern auch bedeutet, dass wir "spionieren" oder sehen können, was unsere Funktion tut, wenn es diese Funktion nennt.

09. Startprüfungsanwendungen starten

Test React

(Bild: © React Testing-Bibliothek)

Schreiben von Tests können ein wenig entmutigend sein, mit dem Sie beginnen können. Ich hoffe, dieses Tutorial hat Ihnen etwas mehr Vertrauen gegeben, um es auszuprobieren. Da ich mit dem Schreiben von Tests für meine Anwendungen angefangen habe

Für mehr Ideen, wie Sie Ihre Komponenten testen können, besuchen Sie Testing-Bibliothek reagieren oder Testen von Tests reagieren. . Wenn Sie nach den Kursen suchen, um Ihnen zu helfen, beginnen Sie zu beginnen, der von Kent C Dodds (wer die Reaktionsprüfungsbibliothek schrieb und aufrechterhält) ist beliebt. Ich habe auch gefallen Dieser auf Niveau-Up-Tutorials Es ist derjenige, der mich begann, Tests für meinen Code zu schreiben.

Denken Sie daran, wenn Sie ein komplexes Site bauen, möchten Sie Ihre bekommen Web-Hosting Service-Fleck auf. Und wenn diese Site wahrscheinlich viele Vermögenswerte enthält, speichern Sie sie in Zuverlässigkeit Cloud-Speicherung. ist entscheidend.

Dieser Inhalt erschien ursprünglich in Netzmagazin. . Lesen Sie mehr von unserem Webdesign-Artikel hier .

Weiterlesen:

  • HTML6: Was ist es und wann kommt es an?
  • Schreiben Sie den HTML-Code schneller
  • Mobile App Design: Ein Anfängerführer

wie man - Die beliebtesten Artikel

Wie gestaltet man mit CSS-Formen: eine Einführung

wie man Sep 10, 2025

Die Basis jeder Website besteht darin, die Seite in kleinere Elemente unterteilen, die Inhalte haben. Das große Problem mit dies..


17 Möglichkeiten, bessere Kreaturen zu zeichnen

wie man Sep 10, 2025

Wenn Sie Kreaturen ziehen, ist es wichtig, dass sie glaubwürdig sind. Egal wie verrückt Ihre Designs werden, denken Sie daran, ..


Machen Sie Ihre App offline mit Service-Arbeitern

wie man Sep 10, 2025

Seite 1 von 2: Seite 1: schnelleres Laden Seite 1: schnelleres Laden ..


Modell Eine Alien-Piraten-Kreatur in Zbrush

wie man Sep 10, 2025

Um Ihnen zu helfen, wie man einen 3D-Alien-Pirat-Charakter erstellt, werde ich Ihnen zeigen, wie ich das Gesicht meiner Kreatur, ..


So erstellen Sie Comic-Zeichen in Cinema 4D

wie man Sep 10, 2025

Mit dem Aufkommen von Mobilfunkspielen und Indie Videospiele , gab es einen großen Zustrom von Illustratoren und ..


So prototype eine mobile App mit Adobe XD

wie man Sep 10, 2025

Dieses Tutorial zeigt Ihnen, wie Sie einen mobilen App-Prototyp in Adobe XD erstellen können, wurde zusammengefügt ..


Erstellen Sie mit Photoshop in 60 Sekunden einen Film mit Photoshop

wie man Sep 10, 2025

Ich wünschte, Sie könnten eine neue Fähigkeit abholen, aber nicht die Zeit, sich zu finden, sich zu finden und zu lernen? Adobe's. Machen Sie es jetzt Wiedergabeliste Könnt..


So kombinieren Sie die Aquarellsätze des Malers

wie man Sep 10, 2025

Corel Maler Bietet ein Bankett Aquarellwerkzeuge. Es verfügt über digitale, reale und Aquarell-Werkzeugkategorien m..


Kategorien