26
loading...
This website collects cookies to deliver better user experience
npm i -D @testing-library/react
Highlight.test.js
, removendo a função render
que criamos e importando a da Testing Library. Você também pode remover o afterEach
, agora isso é feito por baixo dos panos.import { render } from "@testing-library/react";
import Highlight from "./Highlight";
test("renders a value", () => {
const value = "3000";
render(<Highlight value={value} />);
expect(document.body.textContent).toBe(value);
});
test("renders another value", () => {
const value = "5000";
render(<Highlight value={value} />);
expect(document.body.textContent).toBe(value);
});
querySelector
, com um seletor específico para o elemento.expect(document.querySelector("div").textContent).toBe(value);
div
e passa a ser um p
.queries
que se assemelham a forma como um usuário encontra os elementos na página. Podemos usá-las importando o objeto screen
, da seguinte forma:import { render, screen } from "@testing-library/react";
import Highlight from "./Highlight";
test("renders a value", () => {
const value = "3000";
render(<Highlight value={value} />);
expect(screen.getByText(value)).toBeTruthy();
});
expect
mudou um pouco, agora estamos utilizando o método getByText
para obter um elemento com aquele texto.toBeTruthy
para fazer a asserção. Será que não tem uma asserção que faça mais sentido?Se tiver dúvidas sobre quando um valor é Truthy, esse link do MDN deve te ajudar.
npm i -D @testing-library/jest-dom
Highlight.test.js
, importando o jest-dom
e utilizando a asserção toBeInTheDocument
.import { render, screen } from "@testing-library/react";
import "@testing-library/jest-dom";
import Highlight from "./Highlight";
test("renders a value", () => {
const value = "3000";
render(<Highlight value={value} />);
expect(screen.getByText(value)).toBeInTheDocument();
});
jest-dom
direto no arquivo do teste, mas não precisamos fazer dessa forma, podemos importá-lo de forma global.setupTests.js
dentro de src
e adicione a seguinte linha:import "@testing-library/jest-dom/extend-expect";
jest.config.js
para que fique assim:module.exports = {
testEnvironment: "jsdom",
setupFilesAfterEnv: ["<rootDir>/src/setupTests.js"],
};
jest-dom
nos testes.