Ir para o conteúdo principal
Versão: 30.0

Primeiros Passos

Tradução Beta Não Oficial

Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →

Instale o Jest usando seu gerenciador de pacotes preferido:

npm install --save-dev jest

Vamos começar escrevendo um teste para uma função hipotética que soma dois números. Primeiro, crie um arquivo sum.js:

function sum(a, b) {
return a + b;
}
module.exports = sum;

Em seguida, crie um arquivo chamado sum.test.js. Ele conterá nosso teste real:

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});

Adicione a seguinte seção ao seu package.json:

{
"scripts": {
"test": "jest"
}
}

Por fim, execute yarn test ou npm test e o Jest exibirá esta mensagem:

PASS  ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)

Você acabou de escrever seu primeiro teste com sucesso usando o Jest!

Este teste usou expect e toBe para verificar se dois valores eram exatamente idênticos. Para aprender sobre outras funcionalidades de teste do Jest, consulte Usando Matchers.

Executando via linha de comando

Você pode executar o Jest diretamente pela CLI (se estiver disponível globalmente no seu PATH, ex. via yarn global add jest ou npm install jest --global) com várias opções úteis.

Veja como executar o Jest em arquivos correspondentes a my-test, usando config.json como arquivo de configuração e exibindo uma notificação nativa do SO após a execução:

jest my-test --notify --config=config.json

Se quiser aprender mais sobre como executar o jest via linha de comando, consulte a página Opções da CLI do Jest.

Configuração adicional

Gerando um arquivo de configuração básico

Com base no seu projeto, o Jest fará algumas perguntas e criará um arquivo de configuração básico com uma breve descrição para cada opção:

npm init jest@latest

Usando Babel

Para usar o Babel, instale as dependências necessárias:

npm install --save-dev babel-jest @babel/core @babel/preset-env

Configure o Babel para sua versão atual do Node criando um arquivo babel.config.js na raiz do projeto:

babel.config.js
module.exports = {
presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};

A configuração ideal do Babel depende do seu projeto. Consulte a documentação do Babel para mais detalhes.

Making your Babel config jest-aware

Jest will set process.env.NODE_ENV to 'test' if it's not set to something else. You can use that in your configuration to conditionally setup only the compilation needed for Jest, e.g.

babel.config.js
module.exports = api => {
const isTest = api.env('test');
// You can use isTest to determine what presets and plugins to use.

return {
// ...
};
};
"message": "nota"

babel-jest is automatically installed when installing Jest and will automatically transform files if a babel configuration exists in your project. To avoid this behavior, you can explicitly reset the transform configuration option:

jest.config.js
module.exports = {
transform: {},
};

Usando com bundlers

Na maioria dos casos, você não precisa fazer nada especial para trabalhar com diferentes bundlers - exceto se tiver plugins ou configurações que gerem arquivos ou usem regras personalizadas de resolução de arquivos.

Usando webpack

O Jest pode ser usado em projetos que utilizam webpack para gerenciar assets, estilos e compilação. O webpack apresenta desafios únicos. Consulte o guia do webpack para começar.

Usando Vite

O Jest não é suportado pelo Vite devido a incompatibilidades com o sistema de plugins do Vite.

Existem exemplos de integração do Jest com o Vite na biblioteca vite-jest. Porém, esta biblioteca não é compatível com versões do Vite superiores à 2.4.2.

Uma alternativa é o Vitest que possui uma API compatível com o Jest.

Usando Parcel

O Jest pode ser usado em projetos que utilizam parcel-bundler para gerenciar assets, estilos e compilação, similar ao webpack. O Parcel não requer configuração. Consulte a documentação oficial para começar.

Usando TypeScript

Via babel

O Jest suporta TypeScript via Babel. Primeiro, siga as instruções em usando Babel acima. Em seguida, instale o @babel/preset-typescript:

npm install --save-dev @babel/preset-typescript

Depois adicione @babel/preset-typescript à lista de presets no seu babel.config.js.

babel.config.js
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
};

No entanto, existem algumas ressalvas ao usar TypeScript com Babel. Como o suporte ao TypeScript no Babel é puramente de transpilação, o Jest não verificará os tipos dos seus testes durante a execução. Se você precisa disso, pode usar o ts-jest como alternativa, ou executar o compilador TypeScript tsc separadamente (ou como parte do seu processo de build).

Via ts-jest

O ts-jest é um pré-processador TypeScript com suporte a source maps para Jest, permitindo que você teste projetos escritos em TypeScript com o Jest.

npm install --save-dev ts-jest

Para que o Jest transpile TypeScript com ts-jest, você também precisará criar um arquivo de configuração.

Definições de tipos

Existem duas formas de tipar as APIs globais do Jest para arquivos de teste escritos em TypeScript.

Você pode usar as definições de tipos que acompanham o Jest e são atualizadas a cada versão. Instale o pacote @jest/globals:

npm install --save-dev @jest/globals

E importe as APIs dele:

sum.test.ts
import {describe, expect, test} from '@jest/globals';
import {sum} from './sum';

describe('sum module', () => {
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
});

Consulte a documentação adicional de uso para describe.each/test.each e mock functions.

Alternativamente, você pode instalar o pacote @types/jest. Ele fornece tipos para os globais do Jest sem necessidade de importação.

npm install --save-dev @types/jest

:::informação

O @types/jest é uma biblioteca de terceiros mantida no DefinitelyTyped, portanto funcionalidades ou versões recentes do Jest podem não estar cobertas ainda. Tente manter as versões do Jest e do @types/jest o mais alinhadas possível. Por exemplo, se você está usando o Jest 27.4.0, o ideal é instalar a versão 27.4.x do @types/jest.

:::

Usando ESLint

O Jest pode ser usado com ESLint sem configuração adicional, desde que você importe os helpers globais do Jest (describe, it, etc.) de @jest/globals antes de usá-los no seu arquivo de teste. Isso é necessário para evitar erros no-undef do ESLint, que não reconhece os globais do Jest.

Se preferir evitar essas importações, você pode configurar seu ambiente ESLint para reconhecer esses globais adicionando o ambiente jest:

import {defineConfig} from 'eslint/config';
import globals from 'globals';

export default defineConfig([
{
files: ['**/*.js'],
languageOptions: {
globals: {
...globals.jest,
},
},
rules: {
'no-unused-vars': 'warn',
'no-undef': 'warn',
},
},
]);

Ou usar o eslint-plugin-jest, que tem efeito similar:

{
"overrides": [
{
"files": ["tests/**/*"],
"plugins": ["jest"],
"env": {
"jest/globals": true
}
}
]
}