Testes unitários em JavaScript com Jest

Jest é um poderoso framework de testes feito para Javascript pelo Facebook a partir do framework Jasmine. Ele pode ser utilizado em diversos projetos usando: Babel, TypeScript, Node, React, Angular, Vue e muito mais!

Visão Geral

O Jest se tornou uma das estruturas de código aberto para testes mais populares que existem. Essa popularidade foi conquistada por sua baixa complexidade de configuração, escrita e flexibilidade que permitem ao Jest ser utilizado para validar quase tudo em torno do JavaScript, especialmente a renderização do navegador de aplicativos da web e testes unitários no back-end.

Instalação

Para instalação do Jest pode ser usado o gerenciador de pacotes yarn ou npm, ambos irão funcionar, aqui será usado o yarn. Instale o Jest:

Se você estiver utilizando o typescript não esqueça de adicionar também a tipagem:

Adicionalmente, foi adicionado o ts-jest que é um preset para o Jest suportar projetos escritos em Typescript.

Configuração

Agora vamos iniciar a configuração em nosso projeto, teremos que criar um arquivo de configurações para o Jest. Com base em nosso projeto, o jest fará algumas perguntas. Execute o comando abaixo:

O comando irá efetuar algumas perguntas que cria o arquivo jest.config.ts no raiz do projeto.

Porém para o nosso artigo vamos colocar abaixo o arquivo jest.config.ts já configurado.

Bail

Com essa configuração informamos que desejamos ou não que a execução de testes pare após o primeiro erro. True significa então que a execução é interrompida assim que encontrar um erro.

Preset

Aqui é informado o pré processador que será utilizado.

TestMatch

Uma configuração muito importante que foi feita nesse arquivo é o testMatch, esse atributo informamos ao jest onde ele irá encontrar nossos arquivos de teste. Ao configurar desta forma: “**/*.spec.ts”. Estamos informando que qualquer arquivo na aplicação que finalizar .spec.ts será reconhecido como teste da aplicação.

Comandos importantes do Jest

  • describe(name, fn) — cria um bloco que agrupa vários testes relacionados.
  • beforeEach(fn, timeout) — Executa uma função antes que cada um dos testes neste arquivo seja executado.
  • afterEach(fn, timeout) — Executa uma função após cada um dos testes deste arquivo completar.
  • expect(value) — É usada toda vez que você quer testar um valor.

Mão na massa

Para efetuar um teste é necessário criar um arquivo dentro de nossa aplicação de teste com o sufixo *.spec.ts. Está disponível no GitHub um projeto exemplo:

https://github.com/eliasmendes10/Innova-UnitTest?source=post_page—–92d810db0d9——————————–

O exemplo será o teste unitário simples que valida a criação de um usuário.

Foi criado o suite de testes com a função Describe, logo abaixo foi instanciado o UseCase que é o alvo do nosso teste e o Repository de Users. Com a função “It” ou pode ser escrito também “test” é iniciado um teste unitário. Dentro do corpo da função de teste é escrito o comportamento que se deseja testar. E para finalizar o “expect” permite a confirmação do resultado que deve ser alcançado.

Importante, os testes também podem testar caminhos alternativos de erros. Por exemplo, não permitir o cadastro de dois usuários com o mesmo e-mail. a função expect possui uma propriedade chamada “rejects”.

A classe “inMemoryUsersRepository” foi criada para manipular dados em memória (mock). Essa foi uma forma simplificada, porém o jest possui funções de simulações. Para saber mais, acesse: https://jestjs.io/pt-BR/docs/mock-functions

Compartilhe este artigo

Leia Mais

Por que a fase de testes é essencial para o sucesso do seu software

Evite prejuízos e fortaleça sua marca: entenda como os testes de software garantem qualidade, segurança

Desenvolvimento de Software: Guia Completo com tipos, etapas e tendências

Balanceamento de carga: distribuindo a demanda do servidor de forma eficiente

Como funciona o balanceamento de carga, seus benefícios e os diferentes algoritmos e tecnologias associados

Como Você Imagina sua Empresa para o Próximo Ano?

Planeje o futuro da sua empresa com um projeto de software em 2024. Saiba como

Utilizamos cookies para oferecer uma melhor experiência para você. Ao continuar navegando, você concorda com nossa Política de Cookies.