Skip to main content
Versão: 29.5

Iniciando

Instale Jest usando seu gerenciador de pacotes favorito:

npm install --save-dev jest

Vamos começar por escrever 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. Este irá conter o 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 run test e o Jest irá imprimir a seguinte mensagem:

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

Você escreveu com sucesso seu primeiro teste usando Jest!

Este teste usou expect e toBe para testar que dois valores eram exatamente idênticos. Para saber mais sobre as outras coisas que Jest pode testar, consulte Usando Matchers.

Executando a partir da linha de comando​

Você pode executar Jest diretamente da CLI (se ele estiver disponível globalmente em seu PATH, por exemplo: yarn global add jest ou npm install -g jest) com uma variedade de comandos úteis.

Aqui vemos como executar Jest em arquivos que correspondam ao my-test, usando config.json como um arquivo de configuração e exibir uma notificação nativa no Sistema Operacional após a execução:

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

Se você gostaria de aprender mais sobre como executar jest através da linha de comando, dê uma olhada na página Opções de CLI Jest.

Configuração adicional​

Gerando um arquivo de configuração básico​

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

jest --init

Usando Babel​

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

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

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

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

The ideal configuration for Babel will depend on your project. See Babel's docs for more details.

**Making your Babel config jest-aware**

Jest definirá process.env.NODE_ENV para 'test' se não estiver definido para outra coisa. Você pode usar isso em sua configuração para configurar condicionalmente apenas a compilação necessária para Jest, por exemplo.

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

return {
// ...
};
};
note

babel-jest é instalado automaticamente quando instalar Jest e irá automaticamente transformar arquivos caso uma configuração de babel existir em seu projeto. Para evitar esse comportamento, você pode redefinir explicitamente a opção de configuração de transform:

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

Usando webpack​

Jest pode ser usado em projetos que usam webpack para gerenciar assets, estilos e compilação. webpack oferece alguns desafios únicos em relação à outras ferramentas. Consulte o guia do webpack para começar.

Usando Vite​

Jest pode ser utilizado em projetos que usam vite para servir código-fonte a partir de ESM nativo, fornecendo algumas ferramentas do frontend, vite é uma ferramenta opinativa e oferece alguns workflows diferenciados. Jest não é totalmente suportado pelo vite devido a como o sistema de plugins do vite funciona, mas há alguns exemplos para a integração de primeira classe usando vite-jest. Já que isto não é totalmente suportado, você deve ler também a limitação do vite-jest. Consulte o guia de vite para começar.

Usando Parcel​

Jest pode ser usado em projetos que usam parcel-bundler para gerenciar ativos, estilos, e compilação semelhante ao webpack. Parcel requer configuração zero. Veja a documentação oficial para começar.

Usando TypeScript​

Via babel​

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

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

Então adicione o @babel/preset-typescript à lista de presets em seu babel.config.js.

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

No entanto, há algumas ressalvas para usar TypeScript com Babel. Como o suporte para TypeScript em Babel é puramente transpilação, Jest não irá checar seus testes enquanto eles são executados. Se você quiser isso, você pode usar ts-jest em vez disso. ou apenas execute o compilador TypeScript tsc separadamente (ou como parte de seu processo de compilação).

Via ts-jest​

ts-jest is a TypeScript preprocessor with source map support for Jest that lets you use Jest to test projects written in TypeScript.

npm install --save-dev ts-jest

Para que Jest interprete TypeScript com ts-jest, talvez você precise criar um arquivo de configuração.

Definições de tipo​

Existem duas maneiras de ter Jest global APIs tipado para arquivos de teste escritos em TypeScript.

Você pode usar as definições de tipo que já vem com o Jest e serão atualizadas a cada vez que você atualizar o Jest. Instale o pacote @jest/globals:

npm install --save-dev @jest/globals

E importe as APIs de:

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);
});
});
tip

Veja a documentação de uso adicional de describe.each/test.each e funções de simulação (mock, em inglês).

Ou você pode escolher instalar o pacote @types/jest. Ele fornece tipos para os globais do Jest sem necessidade de importá-los.

npm install --save-dev @types/jest
informação

@types/jest is a third party library maintained at DefinitelyTyped, hence the latest Jest features or versions may not be covered yet. Tente coincidir com versões do Jest e @types/jest o mais próximo possível. Por exemplo, se você estiver usando a versão 27.4.0 do jest, então instalar 27.4.x de @types/jest é ideal.