Aprenda o básico do Jest e conheça os matchers mais usados.
• 16 de mai. de 2025
• 6 min de leitura
O que é Jest?
Jest é um poderoso Framework de Testes em Javascript, com um foco na simplicidade.
Rápido e Seguro
Ao garantir que seus testes têm um estado global único, Jest pode executar testes em paralelo de forma confiável. Para torná-los rápidos, Jest executa primeiro os testes que falharam anteriormente e reorganiza com base no tempo de execução dos arquivos de teste.
Iniciando
Instale o Jest utilizando seu gerenciador de pacotes favorito:
npminstall --save-dev jest
yarnadd --dev jest
pnpmadd --save-dev jest
bun add --dev jest
Agora, vamos criar um arquivo chamado sum.js
functionsum(a, b){return a + b;}module.exports= sum;
Em seguida, crie um arquivo chamado sum.test.js (arquivo de teste):
const sum =require("./sum");test("adds 1 + 2 to equal 3",()=>{expect(sum(1,2)).toBe(3);});
Adicione ao seu package.json:
{"scripts":{"test":"jest"}}
Executando os testes:
yarntest# ounpm run test
Saída esperada:
PASS
./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
Estrutura da pasta:
sum/
├── sum.js
├── sum.test.js
└── package.json
Matchers Comuns
Usando Matchers
Jest usa matchers para testar valores de diferentes formas. Abaixo alguns exemplos comuns.
Igualdade Exata
test('dois mais dois é quatro',()=>{expect(2+2).toBe(4);});
Objetos
test('atribuição de objeto',()=>{const data ={one:1}; data['two']=2;expect(data).toEqual({one:1,two:2});});
Dica:
Use toStrictEqual se quiser verificar com mais precisão objetos como undefined, arrays, espaços, etc.
Usando .not
test('adicionando números positivos não é zero',()=>{for(let a =1; a <10; a++){for(let b =1; b <10; b++){expect(a + b).not.toBe(0);}}});
Verdadeiros e Falsos
test('nulo',()=>{const n =null;expect(n).toBeNull();expect(n).toBeDefined();expect(n).not.toBeUndefined();expect(n).not.toBeTruthy();expect(n).toBeFalsy();});test('zero',()=>{const z =0;expect(z).not.toBeNull();expect(z).toBeDefined();expect(z).not.toBeUndefined();expect(z).not.toBeTruthy();expect(z).toBeFalsy();});
Números
test('dois mais dois',()=>{const value =2+2;expect(value).toBeGreaterThan(3);expect(value).toBeGreaterThanOrEqual(3.5);expect(value).toBeLessThan(5);expect(value).toBeLessThanOrEqual(4.5);expect(value).toBe(4);expect(value).toEqual(4);});
Ponto flutuante
test('adicionando números de ponto flutuante',()=>{const value =0.1+0.2;expect(value).toBeCloseTo(0.3);// Correto});
// Este teste irá falhar:test('erro de ponto flutuante',()=>{const value =0.1+0.2;expect(value).toBe(0.3);// Vai falhar});
Strings
test('não existe I em team',()=>{expect('team').not.toMatch(/I/);});test('mas existe "stop" em Christoph',()=>{expect('Christoph').toMatch(/stop/);});
Arrays e Iteráveis
const shoppingList =['fraldas','kleenex','sacos de lixo','papel toalha','leite',];test('a lista de compras tem leite nela',()=>{expect(shoppingList).toContain('leite');expect(newSet(shoppingList)).toContain('leite');});
Exceções
functioncompileAndroidCode(){thrownewError('you are using the wrong JDK!');}test('compiling android goes as expected',()=>{expect(()=>compileAndroidCode()).toThrow();expect(()=>compileAndroidCode()).toThrow(Error);expect(()=>compileAndroidCode()).toThrow('you are using the wrong JDK');expect(()=>compileAndroidCode()).toThrow(/JDK/);});
Obs: Você deve usar o matcher que mais representa o que você deseja testar no seu código.
Test Driven Development, mais conhecido como TDD, é uma abordagem de desenvolvimento de software onde os testes são escritos antes do código de produção. O objetivo principal do TDD é garantir que cada parte do sistema seja testada de forma automatizada, tornando o processo de desenvolvimento mais seguro, previsível e de alta qualidade.
22 de mai. de 20258 min de leitura
Jest
Debugging com Jest: Guia Completo para Solucionar Testes Falhando
Testes falhando são comuns durante o desenvolvimento de software, e depurá-los rapidamente é essencial para produtividade. Neste guia, você vai aprender como utilizar o Chrome DevTools para depurar testes Jest e descobrirá as melhores práticas para resolver problemas comuns de forma eficiente.
20 de mai. de 20255 min de leitura
Jest
Cobertura de Testes com Jest (--coverage)
A cobertura de testes, ou coverage, é uma métrica que mede o quanto do seu código está sendo testado por testes automatizados. Quando você executa testes com Jest utilizando a flag --coverage, ele gera um relatório detalhado que mostra quais partes do seu código estão ou não sendo testadas. Entender esse relatório é fundamental para garantir a qualidade e a segurança da sua aplicação.
16 de mai. de 20256 min de leitura
Jest
Testando Código Assíncrono com Jest
É comum em JavaScript executar código de forma assíncrona. Quando você tiver código assíncrono, o Jest precisa saber quando ele foi concluído para então seguir com os testes seguintes. Felizmente, o Jest oferece várias formas de lidar com isso.