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

Logo do Jest

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

Imagem sobre o React
Jest

Test Driven Development (TDD) com Jest

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
Imagem sobre o React
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
Imagem sobre o React
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
Imagem sobre o React
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.

16 de mai. de 20254 min de leitura

Blog DevTest

Conteúdo técnico Sobre React, Jest e testes modernos para desenvolvedores de todos os níveis

© 2025

DevTrail. Todos os direitos reservados.