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.
A importância dos testes unitários e como Jest facilita o processo
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