React Testing Library que nos permite hacer tests de nuestros componentes de React chequeando el DOM en vez de chequear nuestras props o state cómo haríamos con enzyme.
Con npx podemos crear un proyecto de react atacando al instalador global de create-react-app y crear nuestro proyecto
npx create-react-app configure-react-testing-library
A continuación podemos instalar los siguientes paquetes para usar react-testing-library.
npm i --save-dev react-testing-library jest-dom
Después de que nos instale estos paquetes dentro de la carpeta src, creamos el archivo setupTests.js y dentro escribiremos los siguiente
// se añaden ciertos matchers del DOM a nuestro expect de jest
import "jest-dom/extend-expect";
// resetea nuestros componentes por cada test para que empiecen desde 0
import "react-testing-library/cleanup-after-each";
En el archivo App.test.js lo editaremos de la siguiente forma añadiendole 2 tests.
El primer test se encargará de renderizar nuestro componente
Mientras que el segundo comprobará que el elemento link tenga el texto "Learn React"
import React from "react";
import { render } from "react-testing-library";
import App from "./App";
it("renders without crashing", () => {
const {container} = render(<App />);
expect(container.outerHTML).not.toBeUndefined();
});
it("the link text should be Learn React", () => {
const {container} = render(<App />);
expect(container.querySelector("a")).toHaveTextContent("Learn React");
});
it("the link text should have the right href", () => {
const {container} = render(<App />);
expect(container.querySelector("a")).toHaveAttribute('href','https://reactjs.org');
});
En poco tiempo hemos configurado nuestra aplicación con react-testing-library, no nos tenemos que preocupar de configurar un adapter porque con cualquier versión de React funciona nuestra librería y no hay que olvidarse que a día de hoy nos deja testear los hooks de React.
Os dejo el repo en el siguiente enlace: Repo