Como escrever testes com Jest para JavaScript

Jest é uma das ferramentas mais populares para testar código JavaScript. Aprenda a escrever testes simples e eficazes com Jest e melhore a qualidade do seu código.

Como escrever testes com Jest?

Jest é uma das bibliotecas mais populares para testes em JavaScript. Ele fornece uma maneira simples e eficaz de escrever testes unitários e de integração, e também possui funcionalidades poderosas, como mocks, spies e coverage reports. Usar Jest no seu fluxo de trabalho permite garantir que seu código esteja funcionando corretamente antes de ser entregue à produção.

Como começar a usar Jest?

Para começar a escrever testes com Jest, primeiro você precisa instalar a ferramenta. Se ainda não a tem instalada, basta rodar o seguinte comando:

npm install --save-dev jest

Após a instalação, você pode criar arquivos de teste na sua aplicação. Normalmente, os arquivos de teste têm a extensão .test.js, mas você pode usar a convenção que preferir. Jest automaticamente localiza e executa os testes que estão nesse formato.

Estrutura básica de um teste com Jest

Em Jest, os testes são escritos dentro de funções test(), onde você descreve o que está sendo testado e a expectativa para o resultado. Dentro de cada teste, você usa o expect() para definir a expectativa de como a função ou valor deve se comportar.

Exemplo de teste básico com Jest:

function soma(a, b) {
  return a + b;
}

test('somar 1 e 2 deve retornar 3', () => {
  expect(soma(1, 2)).toBe(3);
});

O que o código está fazendo: O código acima define uma função soma() que recebe dois parâmetros e retorna a soma deles. O teste verifica se a soma de 1 e 2 é igual a 3, usando a função expect() e o matcher toBe(). Se a expectativa for verdadeira, o teste passa; caso contrário, ele falha.

Como testar funções assíncronas com Jest?

Uma das grandes vantagens do Jest é a capacidade de testar funções assíncronas de maneira simples. Você pode escrever testes para funções que retornam promises ou utilizam async/await com facilidade.

Exemplo de teste assíncrono com Jest:

function fetchData() {
  return new Promise(resolve => setTimeout(() => resolve('data'), 1000));
}

test('deve retornar "data" após 1 segundo', async () => {
  const data = await fetchData();
  expect(data).toBe('data');
});

O que o código está fazendo: O código testa uma função assíncrona chamada fetchData(), que simula um delay e retorna a string 'data'. O teste aguarda a resolução da promise com await e, em seguida, verifica se o valor retornado é igual a 'data'.

Usando mocks com Jest

Jest também permite criar mocks para funções, objetos e módulos. Mocks são úteis quando você quer isolar a função que está sendo testada e simular o comportamento de dependências externas.

Exemplo de mock com Jest:

const fetchData = jest.fn(() => Promise.resolve('data'));

test('deve retornar "data" com mock', async () => {
  const data = await fetchData();
  expect(data).toBe('data');
});

O que o código está fazendo: O código cria um mock da função fetchData usando jest.fn(), que retorna uma promise resolvida com 'data'. O teste então verifica se o mock retorna o valor esperado.

Organizando e rodando os testes

Jest também oferece maneiras de agrupar e organizar os testes em suítes, utilizando describe(). Isso ajuda a manter os testes organizados e facilita a execução de testes em grupos.

Exemplo de organização de testes:

describe('função soma', () => {
  test('somar 1 e 2 deve retornar 3', () => {
    expect(soma(1, 2)).toBe(3);
  });
  test('somar 2 e 3 deve retornar 5', () => {
    expect(soma(2, 3)).toBe(5);
  });
});

O que o código está fazendo: O código agrupa os testes relacionados à função soma() dentro de uma suíte describe(), tornando o código mais organizado e facilitando a leitura dos resultados dos testes.

Conclusão

Escrever testes com Jest é uma maneira simples e eficaz de garantir que o seu código JavaScript esteja funcionando corretamente. Usando funções como test(), expect(), e mocks, você pode escrever testes para funções simples e complexas, melhorando a qualidade e a manutenção do código. Comece a implementar testes unitários em seu código hoje mesmo e experimente os benefícios de um código mais confiável.

Testes são uma parte crucial do desenvolvimento de software, especialmente em JavaScript, onde o comportamento de funções pode ser imprevisível sem a devida validação. Jest é uma ferramenta poderosa que simplifica o processo de testar seu código. Ao escrever testes, você ajuda a manter seu código livre de bugs e fácil de manter, além de garantir que as funcionalidades continuam funcionando conforme esperado à medida que o código evolui.

Algumas aplicações:

  • Use Jest para escrever testes unitários e garantir que suas funções JavaScript estão funcionando corretamente.
  • Crie mocks para simular dependências externas e isolar o código que está sendo testado.
  • Utilize suítes de testes para organizar e rodar testes de forma mais eficiente.

Dicas para quem está começando

  • Comece com testes simples e gradualmente adicione mais complexidade à medida que se sentir confortável.
  • Use mocks para simular o comportamento de funções e objetos durante os testes.
  • Não se esqueça de testar casos de erro e entradas inesperadas, além dos casos de sucesso.

Contribuições de Renato Marques

Compartilhe este tutorial: Como escrever testes com Jest?

Compartilhe este tutorial

Continue aprendendo:

O que são testes unitários em JavaScript e por que são importantes?

Os testes unitários são fundamentais para garantir a qualidade do código em JavaScript. Eles ajudam a identificar falhas precocemente e a manter o código mais seguro e eficiente.

Tutorial anterior

Como testar funções assíncronas em JavaScript?

Testar funções assíncronas é uma parte crucial do desenvolvimento moderno em JavaScript. Aprenda a escrever testes com Jest para garantir que funções assíncronas funcionem corretamente.

Próximo tutorial