Maison > interface Web > js tutoriel > le corps du texte

Bases de React ~ test unitaire/interface utilisateur

Linda Hamilton
Libérer: 2024-10-20 16:41:02
original
115 Les gens l'ont consulté
  • Lorsque je teste le code actuel, qui est un test unitaire, j'utilise certains outils. Ce sont des bibliothèques de plaisanteries et de tests de réaction.

・src/Example.js

import Greet from "./components/Greet";

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

export default Example;

Copier après la connexion

・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;

Copier après la connexion

・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();
});


Copier après la connexion
  • La fonction test est une fonction de test.

  • Le premier argument est un titre de test. Le deuxième argument est une fonction de rappel qui exécute le code de test.

-Dans la fonction de rappel, je dois restituer un composant qui sera testé à l'aide d'une fonction de rendu. Et je peux utiliser le débogage et le conteneur si nécessaire.

const { debug, container } = render(<Greet />);
Copier après la connexion
  • Et puis, j'ai besoin d'obtenir un élément en utilisant screen.*.
    Il existe de nombreuses fonctions comme getByText(), getByRole(), getByAltText() et ainsi de suite.

  • Enfin, j'ai besoin de savoir si l'élément existe dans le document, en utilisant expect(element which I got before).toBeInTheDocument();.

  • Après avoir écrit le code de test, je dois exécuter cette commande npm test.

・Succès(Le test est passé)

React Basics~unit test/ui

・Échec(Le test a échoué)

React Basics~unit test/ui

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!