Explorando as configurações do Jest

Go Nuvem
Go Nuvem
Sep 6, 2018 · 2 min read

Introdução

Recentemente, comecei a desenvolver um API em NodeJS. E, como framework de testes, optei pelo Jest. Tive bastante dificuldade, pois era a primeira vez que o utilizava.

O objetivo desse post é exemplificar algumas das configurações do Jest que me permitiram desenvolver os testes.

Configurações

Separe o server do app

Fonte: How to test Express.js with Jest and Supertest.

Tive muitos problemas quando tentava executar mais de um test suit (arquivo de testes). Por algum tempo, fiquei criando todos os testes no mesmo arquivo, o que ficou uma bagunça. Até que vi nesse link acima que a solução era separar o app do server. Pois, como ele explica, após uma primeira conexão o servidor não vai escutar uma nova conexão na porta. Então, passei a adotar essa separação.

Configurando o JEST

Documentação: Configuring Jest.

Inicialmente é necessário separar um espaço para as configurações do Jest.Uma forma é colocar as configurações no package.json.

No entanto, é possível colocar as configurações em um arquivo separado jest.config.js. Eu prefiro utilizar essa forma.

detectOpenHandles e forceExit

Documentação: detectOpenHandles e forceExit.

Essas opções, geralmente, são utilizadas em conjunto. O forceExit serve para garantir que o teste será finalizado. Caso tenha algum recurso pendente, o detectOpenHandles imprime na tela e forceExit finaliza o teste. Em seguida, você pode debugar o código para que não fique nenhum recurso pendente.

globalSetup

Documentação: globalSetup.

Funcionamento:

É uma espécie de beforeAll para as test suits. Ele executa uma vez antes de todos os arquivos de testes.

Exemplo:

Pode ser utilizado para abrir uma conexão com o banco de dados de testes.

globalTeardown

Documentação: globalTeardown.

Funcionamento:

É uma espécie de afterAll para as test suits. Ele executa uma vez após todos os arquivos de testes.

Exemplo:

Pode ser utilizado para deletar a base de dados e fechar a conexão com o banco.

setupTestFrameworkScriptFile

Documentação: setupTestFrameworkScriptFile.

Funcionamento:

Esse arquivo executa imediatamente após o framework de testes ter sido instalado no ambiente.

Exemplo:

Eu utilizo-o para configurar o timeout, pois alguns testes podem passar dos 5000 ms (valor default). Mas é possível colocar métodos como beforeAll, beforeEach, afterAll e afterEach.

testEnvironment

Documentação: testEnvironment.

Funcionamento:

O ambiente é criado para cada arquivo de testes. Assim, a função setup() funciona como um beforeAll escrito dentro de cada arquivo. E a teardown() funciona como um afterAll() escrito dentro de cada arquivo.

Exemplo:

No setup(), geralmente, eu crio dados que serão utilizados nos arquivos de testes. E, no teardown(), utilizo pra limpar as coleções.

Conclusão

Essas são algumas das configurações que utilizo. Espero que elas ajudem vocês.

*Por favor, como iniciante que sou, peço que perdoem qualquer falha nesse post. Estou aberto a críticas e sugestões. Muito obrigado!*

GoNuvem

Muito além de palavras soltas

GoNuvem

Muito além de palavras soltas

Go Nuvem

Written by

Go Nuvem

GoNuvem

Muito além de palavras soltas