
Jest
Jest Passo a Passo
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:
npm install --save-dev jest yarn add --dev jest pnpm add --save-dev jest bun add --dev jest
Agora, vamos criar um arquivo chamado sum.js
function sum(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:
yarn test # ou npm 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(new Set(shoppingList)).toContain('leite'); });
Exceções
function compileAndroidCode() { throw new Error('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.
Referências
Tags
Jest
Artigos Relacionados



