DEV Community

Cover image for Instalando Jest no Angular(20)
Gustavo Machado
Gustavo Machado

Posted on

Instalando Jest no Angular(20)

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:

https://jestjs.io

Passos para configuração do Jest no Angular:

  1. Desinstalar o Karma e Jasmine do projeto;
  2. Configure scripts de execução de testes no package.json;
  3. Remover o objeto de teste do angular.json;
  4. Instalar o pacote do Jest;
  5. Configurar o jest no projeto;
  6. Criar/configurar arquivo setup.jest.ts;
  7. Atualizar o arquivo tsconfig.spec.json;
  8. Ative o esModuleInterop;
  9. 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
Enter fullscreen mode Exit fullscreen mode

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",
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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'],
};
Enter fullscreen mode Exit fullscreen mode

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$"
      }
    }
  }
Enter fullscreen mode Exit fullscreen mode

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();
Enter fullscreen mode Exit fullscreen mode

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"]
}
Enter fullscreen mode Exit fullscreen mode

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,
  }
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode


Desde já agradeço a todos e espero que tenham gostado!

Att.
Gustavo Machado Pontes

linktr linkedin github instagram twitter

Top comments (1)

Collapse
 
devgustavus profile image
Gustavo Machado •

Caso encontrem alguma inconsistência nas informações, por favor, comentem ou me mandem mensagem!
Desde já agradeço a todos.