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:
- 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.
- É 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:
- Evite barrel files;
- 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.
- 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:
Top comments (0)