Da v29 para a v30
Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →
Atualizando do Jest v29 para o v30? Este guia ajudará na refatoração da sua configuração e testes.
Veja o changelog para a lista completa de mudanças.
Atualizando de uma versão anterior? Veja o guia de atualização da v28 para v29 aqui.
Compatibilidade
-
O Jest 30 remove suporte para Node 14, 16, 19 e 21. As versões mínimas suportadas agora são Node 18.x. Certifique-se de usar uma versão compatível do Node antes de atualizar.
-
A versão mínima do TypeScript agora é 5.4. Atualize o TypeScript se estiver usando definições de tipos do Jest (ou de quaisquer de seus pacotes).
-
O pacote
jest-environment-jsdomagora usa JSDOM v26. Esta atualização pode causar mudanças de comportamento no ambiente DOM. Se encontrar diferenças no comportamento do DOM ou novos avisos, consulte as notas de versão do JSDOM para v21–26.
Jest Expect e Matchers
Remoção de Funções Matchers Alternativas
Todos os nomes de matchers alternativos (aliases) foram removidos em favor dos nomes principais. Se você usava os nomes antigos e descontinuados, precisará atualizar seus testes:
- Aliases removidos e suas substituições:
expect(fn).toBeCalled()→expect(fn).toHaveBeenCalled()expect(fn).toBeCalledTimes(n)→expect(fn).toHaveBeenCalledTimes(n)expect(fn).toBeCalledWith(arg)→expect(fn).toHaveBeenCalledWith(arg)expect(fn).lastCalledWith(arg)→expect(fn).toHaveBeenLastCalledWith(arg)expect(fn).nthCalledWith(n, arg)→expect(fn).toHaveBeenNthCalledWith(n, arg)expect(fn).toReturn()→expect(fn).toHaveReturned()expect(fn).toReturnTimes(n)→expect(fn).toHaveReturnedTimes(n)expect(fn).toReturnWith(val)→expect(fn).toHaveReturnedWith(val)expect(fn).lastReturnedWith(val)→expect(fn).toHaveLastReturnedWith(val)expect(fn).nthReturnedWith(n, val)→expect(fn).toHaveNthReturnedWith(n, val)expect(func).toThrowError(message)→expect(func).toThrow(message)
Esses métodos alternativos estavam descontinuados desde o Jest 26 e foram completamente removidos no Jest 30. Faça uma busca-e-substituição global na sua base de código para atualizar para os nomes canônicos dos matchers. A funcionalidade é idêntica — apenas os nomes dos métodos mudaram. (Se usar ESLint com eslint-plugin-jest, a regra no-alias-methods pode automatizar essa substituição.)
Propriedades não enumeráveis
Propriedades não enumeráveis de objetos agora são excluídas dos matchers de objeto por padrão. Isso pode afetar expect.objectContaining ou verificações de igualdade.
Inferência de Tipo Aprimorada para CalledWith
Usuários de TypeScript: Os tipos para a família de matchers CalledWith (ex: toHaveBeenCalledWith) foram aprimorados para inferir tipos de parâmetros de funções. Na maioria dos casos, isso detectará incompatibilidades de tipos com mais precisão. Esta é uma mudança de quebra de compatibilidade em tempo de compilação.
Se você estava fazendo asserções de chamadas com argumentos que não correspondem aos tipos de parâmetro reais da função, o TypeScript pode agora gerar erros nesses testes. Por exemplo, se uma função é tipada para aceitar um número e você escreveu expect(fn).toHaveBeenCalledWith("string"), os tipos do Jest 30 + TypeScript 5 vão sinalizar isso. O comportamento em tempo de execução do matcher permanece inalterado.
Para corrigir novos erros do TypeScript, garanta que os argumentos dos seus testes estejam alinhados com os tipos esperados pela função (ou use type casts se você intencionalmente chamar com tipos diferentes).
Essa alteração não impacta o tempo de execução, mas pode expor novos erros de tipo nos seus testes que passavam despercebidos anteriormente, tornando seus testes mais seguros em termos de tipo.