Fala, pessoal! Tudo bem? Hoje nós vamos falar um pouco sobre testes e, para isso, vamos utilizar o Jest, uma das principais ferramentas para fazer testes em aplicações web.
Esse artigo foca em testes unitários, pois eles são considerados a base dos testes. Mas lembrem-se que vocês podem levar esses conhecimentos para outros tipos de testes também.
O que são testes?
Primeiramente, o que são testes? Eles são uma simulação de um comportamento dentro da nossa aplicação, que podemos obter como resposta aquilo que esperávamos ou não.
Se você não entende bem o que são testes unitários e quiser saber um pouco mais sobre eles, você pode conferir esse artigo que já escrevemos aqui no blog.
Para ilustrar melhor o que são os testes, foi criada a pirâmide de testes. Seu intuito é demonstrar facilmente os tipos de teste e qual responsabilidade cada um deles tem.
Os testes se dividem em: Base, Meio e Topo. Eles são, respectivamente:
Base: Testes unitários
Meio: Teste de Integração
Topo: Testes E2E (Ponta a ponta ou também conhecido como testes de interface)
O teste unitário foca na menor parte possível da sua aplicação. Um exemplo disso seria, então, o teste de uma classe “aluno”, com o intuito de verificar se uma nova instância dessa classe retorna os atributos e métodos como previsto.
Ah, é bom lembrar que, depois de testadas separadamente, as unidades precisam ser testadas “em conjunto” e nós podemos fazer isso usando o teste de integração. Ele serve para entender como essas unidades interagem entre si.
Alguns casos comuns são, por exemplo, comunicação entre interfaces, chamadas bem sucedidas para APIs ou comunicação com banco de dados.
Depois que as integrações estão funcionando, é preciso testar a interface, porque ela será apresentada para o usuário final. Sendo assim, é preciso saber se o fluxo de ações dentro da nossa aplicação está correta.
Para isso, existe o teste E2E ou o teste de ponta a ponta. Ele é responsável por simular as ações de um usuário dentro da nossa aplicação, e geralmente, esses testes são feitos para os fluxos principais como, por exemplo, a compra de um produto dentro de um ecommerce.
Começando com Jest
Para realizar testes, é necessário utilizar ferramentas ou frameworks, e, por isso, usaremos o Jest.
Mas primeiramente, vamos apresentá-lo um pouco. O Jest é um framework JavaScript, criado inicialmente para aplicar testes apenas no React. No entanto, com sua popularização, ele também passou a ser utilizado para projetos Node e TypeScript.
Para instalar no seu projeto, primeiramente é necessário instalar o Jest através do NPM:
npm install --save-dev jest
Depois de instalar, nós vamos configurar o Jest. E para isso vamos criar um arquivo no projeto chamado “jest.config.js”.
Então, para criar esse arquivo vamos digitar o comando:
npx jest --init
Aqui o Jest vai fazer algumas perguntas. Para simplificar, vou encaminhar as respostas que você precisa dar para configurar seu projeto com Node:
Pronto! Sua aplicação está pronta para receber os testes feitos com o Jest!
Criando o primeiro teste com Jest
Em seguida, sua aplicação precisa entender quais arquivos são “para a aplicação” e quais arquivos são para testes. Para isso, bastas inserirmos “spec” nos nossos arquivos destinados para testes. Observe o exemplo:
Dentro desse arquivo, vamos declarar uma função chamada “it”. As responsabilidades de cada teste feito são separadas por essa função.
Para declará-la basta chamar “it” e por parâmetro o teste faz:
O “expect”, como o nome já fala, vai armazenar o resultado daquilo que passarmos para ele. Nesse caso, passamos a soma “1 + 1” e, por fim, precisamos saber qual resultado esperamos daquilo que está dentro da função “expect”.
Para isso, vamos usar o “toBe”. Ou seja, semanticamente estamos falando: espero que 1 + 1 seja 2.
Por fim, executando o comando “npm test” no terminal, ele vai nos mostrar o resultado do teste realizado. Perceba que ele mostra quantos testes temos e quantos testes passaram:
Conclusão
Em síntese, nesse artigo você entendeu o que são testes e qual a lógica por trás deles. Para se construir uma aplicação escalável e sustentável, portanto, você vai precisar de testes, pois eles vão garantir que sua aplicação funcione sem depender de terceiros como frameworks ou bibliotecas.