Logo

dev-resources.site

for different kinds of informations.

Setup Jest, Babel e testing library para testes unitários em React

Published at
3/26/2024
Categories
react
jest
babel
testinglibrary
Author
griseduardo
Categories
4 categories in total
react
open
jest
open
babel
open
testinglibrary
open
Author
11 person written this
griseduardo
open
Setup Jest, Babel e testing library para testes unitários em React

Introdução

Durante o desenvolvimento de código torna-se importante a escrita de testes para trazer mais segurança e confiabilidade durante o processo.
Desde março de 2023, o create-react-app deixou de ser sugerido como opção para iniciar uma aplicação React na doc oficial. A ideia desse artigo é abordar uma configuração simples utilizando Jest, Babel e testing-library, para permitir realizar testes unitários em React, sem utilizar o incluído no create-react-app para esse fim.

Babel

É um compilador javascript que é usado principalmente para converter código ECMAScript 2015+ para versão anterior de javascript, compatível com navegadores e ambientes.

Jest

É um framework de testes criado pelo Facebook, de simples configuração e uso, que permite rodar testes de forma isolada.

Testing library

É uma lib leve que permite simular testes de forma semelhante ao que o usuário vai interagir com a aplicação.

Setup

Para adicionar o Babel:

yarn add @babel/core @babel/preset-env @babel/preset-react babel-jest --save-dev

  • @babel/core: traz a base do Babel para a aplicação.
  • babel-jest, @babel/preset-react: possibilitam a transformação do código javascript dentro do ambiente de teste, para permitir a execução dos testes.
  • @babel/preset-env: permite usar a última versão de javascript, sem precisar definir que transformação de sintaxe é necessária para ser compatível com o ambiente que vai ser utilizado.

Para adicionar o Jest:

yarn add jest jest-environment-jsdom --save-dev

  • jest: possibilita a realização dos testes unitários.
  • jest-environment-jsdom: fornece o ambiente de teste do JSDOM, que simula um ambiente DOM como se estivesse no navegador.

Para adicionar a testing-library:

yarn add @testing-library/react @testing-library/jest-dom @testing-library/user-event --save-dev

  • @testing-library/react: adiciona a testing-library para uso em aplicações React.
  • @testing-library/jest-dom: traz uma maior quantidade de matchers para os testes de Jest, fazendo eles mais declarativos.
  • @testing-library/user-event: permite simular interações que os usuários terão com a aplicação, como por exemplo cliques, escrita.

Adicionar arquivo de configuração do Jest, jest.config.js , na raiz do projeto:

const config = {
  testEnvironment: "jsdom",
};

module.exports = config;
Enter fullscreen mode Exit fullscreen mode

Onde o testEnvironment vai definir o ambiente de teste.

Adicionar arquivo de configuração do Babel, babel.config.js , na raiz do projeto:

module.exports = {
  presets: [
    "@babel/preset-env",
    "@babel/preset-react",
  ],
};
Enter fullscreen mode Exit fullscreen mode

Onde dentro de presets será colocado os presets que serão utilizados.

Adicionar script para rodar testes no package.json:

"scripts": {
  "test": "jest",
}
Enter fullscreen mode Exit fullscreen mode

Os formatos dos arquivos de teste que vão ser rodados por default:

  • .test.js
  • .spec.js
  • .js se dentro da pasta __tests__

Rodando yarn test os testes serão executados.

Exemplo de execução

Agora vou apresentar um exemplo de execução de um teste após a configuração realizada, para mostrar o resultado.

Será definido um componente de exemplo em Example.js, que traz um texto Example:

import React from "react";

const Example = () => (
  <h1>Example</h1>
)

export default Example;
Enter fullscreen mode Exit fullscreen mode

E um arquivo de teste do componente Example.test.js, que vai validar se após a renderização dele aparecerá o texto Example:

import React from "react";
import "@testing-library/jest-dom";
import { render, screen } from "@testing-library/react";

import Example from "./Example";

describe("<Example />", () => {
  it("should render component", () => {
    render(<Example />);

    const element = screen.getByText("Example");

    expect(element).toBeInTheDocument();
  });
});
Enter fullscreen mode Exit fullscreen mode

Por fim foi executado no terminal yarn test, obtendo o seguinte resultado:

Image description

Conclusão

A ideia é apresentar um setup utilizando Babel, Jest e testing-library para a realização de testes unitários em React, sem utilizar o que está incluído no create-react-app para esse fim. O intuito do exemplo acima foi mais mostrar que o teste foi executado com sucesso após a configuração, no próximo artigo focarei mais em como funciona os testes e os diferentes cenários que podem ser realizados a partir da testing-library com o Jest.

babel Article's
30 articles in total
Favicon
Manual Setup (Custom Webpack/Babel configuration) with react (i am not able running it )
Favicon
Babel and Sourcemaps, Part-1
Favicon
Imagining React Without JSX: A Developer's Worst Nightmare
Favicon
Explorando org-babel en emacs
Favicon
Introduction to custom Babel plugins
Favicon
How React JSX Gets Transformed Into JavaScript Behind the Scenes
Favicon
Why react components starts with capital letter ?
Favicon
Fixing Jest import failure
Favicon
Comprehensive Analysis of Industry-standard Build Tools
Favicon
Making a Logging Plugin with Transpiler
Favicon
Mastering Project Maintainability with Module Resolver
Favicon
Understanding Webpack and Babel: Key Tools for Modern JavaScript Development
Favicon
How I optimized Carousel for EditorJS 2x in size.
Favicon
Let's Talk About Babel: Have you ever stopped to understand it?
Favicon
Setup Jest, Babel e testing library para testes unitários em React
Favicon
Setup Jest, Babel and testing library for unit testing in React
Favicon
Exploring Marvels of Webpack - Ep 1 - React Project without CRA
Favicon
What is Babel.js? Uses, Advantages, and Disadvantages
Favicon
The Comprehensive Guide to Babel
Favicon
Why to use babel ?
Favicon
Configuring StyleX in React application
Favicon
React Development Essentials: Webpack and Babel Introduction
Favicon
Abstract Syntax Trees and Practical Applications in JavaScript
Favicon
Create React App From Scratch With Isomorphic Rendering
Favicon
How React uses pragmas to run tests conditionally
Favicon
Unveiling the Artistry Behind JavaScript's Babel Engine: Transforming Code Across Frontiers
Favicon
Express & ES6 Boilerplate
Favicon
An introduction to Babel
Favicon
Building Cross-Browser Compatible Web Apps with Babel: A Step-by-Step Guide
Favicon
Configure Stimulus with esbuild and Babel — Rails & Javascript

Featured ones: