Nosso dontpad: http://dontpad.com/on13-react
- Usar as reações do zoom e levantar a mão para sinalizar que gostaria de falar
- Enviar as dúvidas no chat
- Manter microfone desligado quando outras pessoas estiverem falando
- Manter câmera ligada o máximo possível
- Momento mão no código, momento de olho na tela
Conteúdo da aula:
Chegou nossa última aula. Vamos focar 100% em produzir um projeto guiado, revisar todos os conteúdos e ter um extra com testes unitários. 🚀
- Introdução aos Testes unitários com React Testing Library
- Projeto Guiado
Como pessoas iniciantes na programação uma das ferramentas que pode nos dar confiança em nosso trabalho e em cada linha de código(cobertura de testes) que escrevemos são os testes.
Além disso, o mercado espera que advoguemos pela qualidade em nosso trabalho.
Por isso, em entrevistas de emprego costumam perguntar se temos alguma familiaridade com testes unitários. Essa aula vai ser o seu passo incial para sua resposta a essa pergunta ser 'SIM'.
Benefícios de testar seu código:
- Encontrar e corrigir bugs
- Aumentar a confiabilidade da sua aplicação
- Otimizar o tempo da pessoa QA
- Serve como documentaçãos
Bloco de teste
- Renderizar o componente que queremos testar
- Encontrar os elementos que queremos interagir
- Interagir com esses elementos
- Afirmar o resultado esperado
Quando criamos nossas aplicações com create-react-app a configuração para usar testes já vem toda pronta. São alguns daqueles arquivos default que a gente apagou lá na primeira aula.
Vamos aprender a testar em react? Na prática a gente vai imitar comportamento humano interagindo com a aplicação só que de forma automatizada. Sim, você vai poder dizer que começou a estudar testes unitários e automatizados com React Testing Library. Vamos lá!
-
Vamos verificar no package.json se temos as dependencias testing library e o script de test
-
Escrevemos o arquivo de test com a extensão .test.js ou .spec.js
-
Dentro do arquivo de test vamos importar o arquivo que queremos testar e também as funções do testing library
import { render, screen } from '@testing-library/react'
import App from './App'
- Para criar seu teste a sintaxe pode ser esta abaixo:
describe('Hello world', () => {
it('should render hello world', () => {
render(<App />);
const helloElement = screen.getByText('Hello, World!')
expect(helloElement).toBeInTheDocument()
})
})
- Para rodar o scrip de test, no terminal rodamos yarn test
No futuro, é muito importante estudar sobre TDD (Programação orientada a testes), saber também como criar mocks de objetos, chamadas de API e funções. Além de ser bastante críticas em avaliar quais casos de testes fazem sentido. :)
Material de apoio nos estudos de testes com React Testing Library:
- playlist completa com o básico: https://www.youtube.com/watch?v=7dTTFW7yACQ&list=RDCMUCW5YeuERMmlnqo4oq8vwUpg&start_radio=1&t=6s
- documentação: https://testing-library.com/docs/
- artigo de projeto com teste no react e com typescript: https://blog.rocketseat.com.br/introducao-a-testing-library-testando-componentes-react/
- Priorização de uso das queries: https://www.youtube.com/watch?v=5ptcfSEH7vw
Uma aplicação simples de TODO LIST, contendo 3 funcionalidades:
- Inserir uma nova tarefa (Não permitir criar a tarefa sem escrever nada no titulo da tarefa)
- Marcar tarefas como concluídas
- Apagar tarefas
Nossa aplicação terá cobertura de testes com React Testing Library para as 3 funcionalidades
[x] Create React App
[x] Criar o component Header (html, css e tests)
[x] Criar o component List com a função de add uma tarefa (html, css e tests)
[] Criar e testar as funções de completar uma tarefa
[x] Criar e testar as funções de deletar uma tarefa
[] Incluir configuração do Netlify
[x] Subir no github
[x] Subir no Netlify
Desafio:
Calma! É só mais uma TAREFINHA DE CASA pra chamar de sua! Já treinamos bastante com nossos exemplos na aula!
Vamos usar o mesmo projeto Minha listinha feito na sala de aula e apenas incluir os componentes abaixo:
- Incluir um menu
- Incluir footer
- Incluir uma página com tema livre( você decide o conteúdo)
- Criar rotas
- Atualizar no github para atualizar automaticamente no netlify.
- A entrega da semana no classroom serão 2 links: o seu link do netlify e o seu link do github
- Arraseee!