Primeiros Passos
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
- Yarn
- pnpm
- Bun
npm install --save-dev jest
yarn add --dev jest
pnpm add --save-dev jest
bun add --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
- Yarn
- pnpm
- Bun
npm init jest@latest
yarn create jest
pnpm create jest
bunx create-jest
Usando Babel
Para usar o Babel, instale as dependências necessárias:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev babel-jest @babel/core @babel/preset-env
yarn add --dev babel-jest @babel/core @babel/preset-env
pnpm add --save-dev babel-jest @babel/core @babel/preset-env
bun add --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:
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.
module.exports = api => {
const isTest = api.env('test');
// You can use isTest to determine what presets and plugins to use.
return {
// ...
};
};
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:
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
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/preset-typescript
yarn add --dev @babel/preset-typescript
pnpm add --save-dev @babel/preset-typescript
bun add --dev @babel/preset-typescript
Depois adicione @babel/preset-typescript à lista de presets no seu 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
- Yarn
- pnpm
- Bun
npm install --save-dev ts-jest
yarn add --dev ts-jest
pnpm add --save-dev ts-jest
bun add --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
- Yarn
- pnpm
- Bun
npm install --save-dev @jest/globals
yarn add --dev @jest/globals
pnpm add --save-dev @jest/globals
bun add --dev @jest/globals
E importe as APIs dele:
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
- Yarn
- pnpm
- Bun
npm install --save-dev @types/jest
yarn add --dev @types/jest
pnpm add --save-dev @types/jest
bun add --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
}
}
]
}