DEV Community

Cover image for Como deixar os testes Jest mais rápidos?
Beto Frega
Beto Frega

Posted on

Como deixar os testes Jest mais rápidos?

Este é um post rápido só pq não encontrei nenhum conteúdo sobre isso em ptbr. Referências em inglês no final do artigo. Dúvidas (que eu espero que vc tenha, pq artigo curto e escrito em 10 minutos, né?) manda no comentário.

O problem resumido:

  1. O Jest usa CommonJS em vez de ECMAScript Modules. Isso significa [várias coisas e também que] que ele carrega toda a árvore de dependências (as importações) antes de rodar os testes.
  2. É bem provável que o seu projeto use "barrel files" ou "arquivos barril(?)". Esses arquivos exportam vários outros arquivos. Ou seja, pode ser que a sua aplicação esteja sendo importada por completo nos seus testes unitários. Ê, beleza.

A solução resumida:

  1. Evite barrel files;
  2. Caso prefira manter os tais barrel files, faça o mock usando mock factories. Automock não funciona, spy não funciona, precisa ser mock factory.
  3. Centralizar todas as suas importações em alguma injeção de dependências (recomendo o próprio React Context) é outra possibilidade que também faz muito sentido: no contexto da aplicação você injeta as implementações concretas reais e no context só coloca uns fakes. Essa é a minha opção primária, mas é um custo que só compensa em aplicações (bem) grandes.

Referências em inglês:

Discussion (1)