Getting Started
Instale Jest usando yarn
:
yarn add --dev jest
Ou npm
:
npm install --save-dev jest
Nota: A documentação Jest usa comandos yarn
, mas npm
também funcionará. Você pode comparar comandos yarn
e npm
aqui.
Let's get started by writing a test for a hypothetical function that adds two numbers. First, create a sum.js
file:
function sum(a, b) {
return a + b;
}
module.exports = sum;
Then, create a file named sum.test.js
. This will contain our actual test:
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"
}
}
Finally, run yarn test
or npm run test
and Jest will print this message:
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
You can run Jest directly from the CLI (if it's globally available in your PATH
, e.g. by yarn global add jest
or npm install jest --global
) with a variety of useful options.
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
Generate a basic configuration file
Based on your project, Jest will ask you a few questions and will create a basic configuration file with a short description for each option:
jest --init
Usando Babel
To use Babel, install required dependencies via yarn
:
yarn add --dev babel-jest @babel/core @babel/preset-env
Configure Babel to target your current version of Node by creating a babel.config.js
file in the root of your project:
// 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 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 {
// ...
};
};
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 dropped support for Babel 6. We highly recommend you to upgrade to Babel 7, which is actively maintained. However, if you cannot upgrade to Babel 7, either keep using Jest 23 or upgrade to Jest 24 with babel-jest
locked at version 23, like in the example below:
"dependencies": {
"babel-core": "^6.26.3",
"babel-jest": "^23.6.0",
"babel-preset-env": "^1.7.0",
"jest": "^24.0.0"
}
While we generally recommend using the same version of every Jest package, this workaround will allow you to continue using the latest version of Jest with Babel 6 for now.
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 TypeScript
Jest supports 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
Then add @babel/preset-typescript
to the list of presets in your 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 transpilation, Jest will not type-check your tests as they are run. If you want that, you can use ts-jest.