Getting Started
Instale Jest usando yarn
:
yarn add --dev jest
Ou npm
:
npm install --save-dev jest
Nota: A documentação do Jest usa comandos do yarn
, mas com o npm
também funcionará. Você pode comparar comandos yarn
e npm
aqui.
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 esta 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
If you'd like to learn more about running jest
through the command line, take a look at the Jest CLI Options page.
Configuração adicional
Gerando um arquivo de configuração básico
Com base no seu projeto, o Jest fará algumas perguntas a você e criará um arquivo de configuração básico com uma breve descrição para cada opção:
jest --init
Usando Babel
Para usar Babel, instale as dependências necessárias via yarn
:
yarn add --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'}}]],
};
A configuração ideal para Babel dependerá do seu projeto. Veja Docs do Babel para mais detalhes.
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 {
// ...
};
};
Nota:
babel-jest
é instalado automaticamente quando instalar Jest e irá automaticamente transformar arquivos se uma configuração de babel existe em seu projeto. Para evitar esse comportamento, você pode redefinir explicitamente a opção de configuração detransform
:
// jest.config.js
module.exports = {
transform: {},
};
Babel 6 support
Jest 24 retirou o suporte para Babel 6. Recomendamos fortemente que você atualize para o Babel 7, que é ativamente mantido. No entanto, se você não pode atualizar para Babel 7, continue usando Jest 23 ou atualize para Jest 24 com babel-jest
bloqueado na versão 23, como no exemplo abaixo:
"dependencies": {
"babel-core": "^6.26.3",
"babel-jest": "^23.6.0",
"babel-preset-env": "^1.7.0",
"jest": "^24.0.0"
}
Nós geralmente recomendamos o uso da mesma versão de cada pacote Jest, porém esta solução permitirá que você continue usando a versão mais recente do Jest com o Babel 6 por hora.
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.
Using parcel
Jest can be used in projects that use parcel-bundler to manage assets, styles, and compilation similar to webpack. Parcel requires zero configuration. Refer to the official docs to get started.
Usando TypeScript
O Jest suporta TypeScript, via Babel. First, make sure you followed the instructions on using Babel above. Next, install the @babel/preset-typescript
via yarn
:
yarn add --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',
],
};
However, there are some caveats to using TypeScript with Babel. Because TypeScript support in Babel is purely transpilation, Jest will not type-check your tests as they are run. If you want that, you can use ts-jest instead, or just run the TypeScript compiler tsc separately (or as part of your build process).
You may also want to install the @types/jest
module for the version of Jest you're using. This will help provide full typing when writing your tests with TypeScript.
For
@types/*
modules it's recommended to try to match the version of the associated module. For example, if you are using26.4.0
ofjest
then using26.4.x
of@types/jest
is ideal. In general, try to match the major (26
) and minor (4
) version as closely as possible.
yarn add --dev @types/jest