Heim > Web-Frontend > js-Tutorial > Hauptteil

React Basics~Unit Test/UI

Linda Hamilton
Freigeben: 2024-10-20 16:41:02
Original
115 Leute haben es durchsucht
  • Wenn ich aktuellen Code teste, also einen Unit-Test, verwende ich einige Tools. Sie sind Scherz- und Reaktionstest-Bibliotheken.

・src/Example.js

import Greet from "./components/Greet";

const Example = () => {
  return <Greet />;
};

export default Example;

Nach dem Login kopieren

・src/component/Greet.jsx

const Greet = () => {
  return (
    <div>
      <form>
        <h1>Hello</h1>
        <input type="radio" />
        <label htmlFor="fullname">Fullname</label>
        <input id="fullname" type="text" placeholder="Fullname" />
        <button>button1</button>
        <button>button2</button>
        <img src="/logo512.png" alt="React Logo" />
        <h2>Hello2</h2>
      </form>
    </div>
  );
};

export default Greet;

Nach dem Login kopieren

・src/component/Greet.test.jsx

import { render, screen } from "@testing-library/react";
import Greet from "./Greet";

test("Whether elements exists or not", () => {
  const { debug, container } = render(<Greet />);
  //get the h1 element
  const h1El = screen.getByText("Hello");
  expect(h1El).toBeInTheDocument();

  //get the h2 element by specifying the name
  const headEl = screen.getByRole("heading", { name: "Hello2" });
  debug(headEl);
  expect(headEl).toBeInTheDocument();

  //get radio button
  const radioEl = screen.getByRole("radio");
  debug(radioEl);
  expect(radioEl).toBeInTheDocument();

  //get the img element
  const imgEl = screen.getByRole("img");
  debug(imgEl);
  expect(imgEl).toBeInTheDocument();

  //get the h1 element by getting the alt
  const imgEl2 = screen.getByAltText("React Logo");
  debug(imgEl2);
  expect(imgEl2).toBeInTheDocument();

  //get the h2 element by using the querySelector of container
  const h2El = container.querySelector("h2");
  debug(h2El);
  expect(h2El).toBeInTheDocument();

  //get an element by getting the labe
  const elByLabel = screen.getByLabelText("Fullname");
  debug(elByLabel);
  expect(elByLabel).toBeInTheDocument();

  //get an element by getting the placeholder
  const elByPlaceholder = screen.getByPlaceholderText("Fullname");
  debug(elByPlaceholder);
  expect(elByPlaceholder).toBeInTheDocument();
});


Nach dem Login kopieren
  • Die Testfunktion ist eine Testfunktion.

  • Das erste Argument ist ein Testtitel. Das zweite Argument ist eine Rückruffunktion, die den Testcode ausführt.

-In der Rückruffunktion muss ich eine Komponente rendern, die mithilfe einer Renderfunktion getestet wird. Und ich kann bei Bedarf Debug und Container verwenden.

const { debug, container } = render(<Greet />);
Nach dem Login kopieren
  • Und dann muss ich ein Element mithilfe von screen.* abrufen.
    Es gibt viele Funktionen wie getByText(), getByRole(), getByAltText() und so weiter.

  • Zuletzt muss ich mithilfe von „expect(element, das ich zuvor erhalten habe).toBeInTheDocument();“ herausfinden, ob das Element im Dokument vorhanden ist.

  • Nachdem ich den Testcode geschrieben habe, muss ich diesen Befehl npm test ausführen.

・Erfolg (Die Prüfung bestanden)

React Basics~unit test/ui

・Fehler (Der Taest ist fehlgeschlagen)

React Basics~unit test/ui

Das obige ist der detaillierte Inhalt vonReact Basics~Unit Test/UI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!