Ir para o conteúdo principal
Versão: Próximo

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
}
}
]
}