O que é o Jest e para que serve?
O Jest é um framework de testes em JavaScript criado pelo Facebook, amplamente utilizado em projetos com React, mas que também pode ser facilmente integrado a aplicações Angular, Node.js, Vue, entre outras.
Sua principal função é permitir a criação, execução e validação de testes automatizados, especialmente os testes unitários e testes de snapshot, de forma rápida e confiável.
Site oficial:
Passos para configuração do Jest no Angular:
- Desinstalar o Karma e Jasmine do projeto;
- Configure scripts de execução de testes no package.json;
- Remover o objeto de teste do angular.json;
- Instalar o pacote do Jest;
- Configurar o jest no projeto;
- Criar/configurar arquivo setup.jest.ts;
- Atualizar o arquivo tsconfig.spec.json;
- Ative o esModuleInterop;
- Execute o jest/testes unitários.
1. Desinstalar o Karma e Jasmine do projeto:
Primeiro devemos desinstalar o Karma e Jasmine do projeto. O Karma e Jasmine são ferramentas de testes que já vem configurados inicialmente nos projetos angular, sendo o Jasmine um framework e o Karma um "Test Runner".
Execute o seguinte comando no terminal:
npm remove @types/jasmine jasmine-core karma karma-chrome-launcher karma-coverage karma-jasmine karma-jasmine-html-reporter
2. Configure scripts de execução de testes no package.json:
Agora devemos configurar o package.json para reconhecer e executar comandos básicos e essenciais de teste do Jest.
Copie e cole os seguintes scripts no package.json:
"test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --coverage",
3. Remover o objeto de teste do angular.json:
Neste passo, vamos remover o objeto de teste do angular.json, cujo o mesmo faz parte da configuração do Karma e Jasmine, do qual foram removidos.
Remova as seguintes linhas em vermelho:
4. Instalar o pacote do Jest:
Finalmente instalaremos a dependência do Jest no projeto.
Execute o seguinte comando no terminal:
npm install --save-dev @types/jest jest-preset-angular
5. Configurar o jest no projeto:
Agora vamos configurar o jest no Angular, seja através do arquivo jest.config.js ou dentro do package.json.
jest.config.js:
Copie e cole dentro do arquivo:
module.exports = { preset: 'jest-preset-angular', setupFilesAfterEnv: ['<rootDir>/src/setup.jest.ts'], };
OU
Dentro do package.json:
Copie e cole dentro do arquivo:
"jest": { "preset": "jest-preset-angular", "setupFilesAfterEnv": [ "<rootDir>/src/setup.jest.ts" ], "testPathIgnorePatterns": [ "<rootDir>/node_modules/", "<rootDir>/dist/" ], "globals": { "ts-jest": { "tsConfig": "<rootDir>/tsconfig.spec.json", "stringifyContentPathRegex": "\\.html$" } } }
6. Criar/configurar arquivo setup.jest.ts:
Após configurar o jest, vamos criar um arquivo typescript para importar o modulo do jest no mesmo.
Primeiramente crie um arquivo chamado setup.jest.ts dentro da pasta src.
Copie e cole dentro do arquivo:
import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone/index.mjs'; setupZoneTestEnv();
7. Atualizar o arquivo tsconfig.spec.json:
No passo 7, vamos ter que configurar o arquivo tsconfig.spec.json para o jest e referenciar o setup.jest.ts que acabamos de criar.
Faça as seguintes alterações dentro do arquivo:
{ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", "types": ["jest", "node"], }, "files": ["src/setup.jest.ts"], "include": ["src/**/*.spec.ts", "src/**/*.ts"] }
8. Ative o esModuleInterop:
Caso você não ativar o esModuleInterop, provavelmente aparecerá um aviso no terminal ao rodar os testes, contudo é importante para evitar erros de importação.
Abra o seu tsconfig.json e adicione ou modifique esta configuração:
{ "compilerOptions": { "esModuleInterop": true, } }
9. Execute o jest/testes unitários:
Agora vamos executar os testes unitários através do jest e verificar se está tudo ok.
Execute no terminal:
npm run test
Desde já agradeço a todos e espero que tenham gostado!
Att.
Gustavo Machado Pontes
Top comments (1)
Caso encontrem alguma inconsistência nas informações, por favor, comentem ou me mandem mensagem!
Desde já agradeço a todos.