Coder Social home page Coder Social logo

ananuness / react-tdd Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 51 KB

Pequena aplicação para praticar testes no frontend com React utilizando o Jest e o Testing Library

Home Page: https://react-tdd-five.vercel.app

JavaScript 2.19% HTML 2.85% CSS 13.72% TypeScript 81.24%
jest react react-testing-library recoil tdd-react

react-tdd's Introduction

👩‍🔬 React TDD

Projeto com foco em desenvolver o frontend orientado à testes, utilizando o React Testing Library e o Jest 🃏

🛠️ Pré-requisitos

  • Git para baixar o projeto
  • Node.js para executar o código localmente

📥 Instalação

  1. Clone o repositório:
git clone [email protected]:<username>/react-tdd.git
  1. Navegue até a pasta do repositório:
cd react-tdd
  1. Instale as dependências:
npm i
  1. Rodando a aplicação:
npm run test # para rodar todos os testes da aplicação
npm run dev # para rodar a aplicação

📦 Dependências

  • ts-node: pacote necessário para executar código TypeScript no Node.js;

  • ts-jest: um transformer do Jest para conseguirmos testar aplicações escritas em TypeScript;

  • jest e @types/jest: framework utilizado para realizar testes unitários e o pacote necessário para utilização do jest com typescript, respectivamente;

  • jsdom e jest-environment-jsdom: de acordo com a documentação do jsdom, ele é uma implementação em JavaScript puro de muitos padrões da web, como os padrões WHATWG DOM e HTML, para uso com Node.js. Em geral, o objetivo do projeto é emular o suficiente de um subconjunto de um navegador da Web para ser útil para testar e extrair aplicativos da Web do mundo real.

    Logo, o jest-environment-jsdom serve para habilitarmos esse ambiente para desenvolver os testes com o Jest;

Conjunto de ferramentas voltadas para testar os componentes React:

  • @testing-library/react: fornece funções utilitárias leves em cima do react-dom e react-dom/test-utils, de uma forma que incentiva melhores práticas de teste;

  • @testing-library/jest-dom: oferece jest matchers customizados estendendo o jest para testar o estado da DOM, tornando os testes mais declarativos e fáceis de ler e manter;

    Os matchers em Jest são métodos como .toBe(), .toBeTruthy(), entre outros. Mas quando instalamos esse pacote, temos acesso à matchers relacionados à DOM, como .toBeInTheDocument(), .toBeDisable(), entre outros. Por isso se tornam fáceis de ler.

  • @testing-library/user-event: busca simular os eventos reais que aconteceriam no navegador enquanto o usuário interage com ele. Por exemplo, userEvent.click(checkbox) alteraria o estado do checkbox;

  • identity-obj-proxy: útil para testar importações triviais de webpack. Por exemplo, você pode dizer ao Jest para simular este objeto como módulos CSS importados, então todas as pesquisas de className no objeto de estilos importado serão retornadas como estão.

    Resumindo, serve para, quando importarmos arquivos como imagens ou estilos em nosso código, não dê problema nos testes. E isso é feito através de mocks, ou seja, uma simulação desses arquivos.

🔗 Referências

Ideia do projeto: [Alura] React: testando os seus componentes

Para fazer o setup:

[Medium] React Hero: TypeScript + Jest + React Testing Library setup

[Youtube] Configurando Jest + React Testing Library no Vite #Dia23

Para mockar alguns hooks: [Medium] Mocking hooks for testing with jest and react-testing-library


Feito com ❤️ por Ana Beatriz Nunes

react-tdd's People

Contributors

ananuness avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.