Ir para o conteúdo principal

2016 no Jest

· 9 min de leitura"
Tradução Beta Não Oficial

Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →

2016 foi um ano importante para os testes em JavaScript com o Jest. Nos primeiros seis meses do ano, reescrevemos o Jest e construímos uma base sólida para melhorar significativamente o desempenho e a experiência do desenvolvedor ao testar código JavaScript. Adicionamos tipagem Flow em todo o código-base, criamos diversos testes de integração para o próprio Jest e adotamos lerna para transformar o Jest de um framework em uma plataforma de Testes JavaScript sem Dores.

O recém-criado react-test-renderer finalmente permitiu testar componentes do react-native. Através do preset jest-react-native (agora incorporado diretamente ao react-native), o Jest agora funciona imediatamente em qualquer projeto React e vem pré-configurado em projetos create-react-app e react-native. Integramos partes essenciais do Jest no empacotador do react-native e o novo recurso de snapshot testing já está sendo usado fora do Jest: foi integrado ao React Storybook como "storyshots" e está sendo adotado por outros executores de testes como ava.

O projeto pretty-format foi reescrito com foco em desempenho para impulsionar o recurso de snapshots do Jest, foi recentemente incorporado ao monorepo do Jest e também é útil em outros executores de testes. Hoje, o Jest é muito mais sobre coletar diferentes ideias e soluções para testes do que sobre uma implementação específica de framework de testes.

Gostaria de agradecer profundamente todas as pessoas que contribuíram para o Jest neste ano, tanto da comunidade open source quanto do Facebook: Dmitrii Abramov, Cristian Carlesso, Dan Abramov, Daniel Lo Nigro, Maxim Derbin, Evan Scott, Forbes Lindesay, Keyan Zhang e mais 60 pessoas. Também damos as boas-vindas a Michał Pierzchała (@thymikee) como primeiro contribuidor externo oficial do Jest. Ele tem feito um excelente trabalho gerenciando issues e PRs no repositório. Se você quer começar a contribuir com o Jest, temos várias tarefas iniciais e estamos sempre felizes em ajudar em nosso canal do Discord.

repl.it com integração do Jest

Amjad Massad criou um container do Jest para que você possa testar o Jest diretamente no navegador. Você pode usá-lo a partir de agora ao criar issues no GitHub, o que deve ajudar a solucionar problemas mais rapidamente. Amjad e Haya estão desenvolvendo o repl.it para democratizar a programação criando ferramentas e plataformas poderosas e simples para educadores, estudantes e desenvolvedores. Eles também estão contratando engenheiros talentosos!

Atualização da Comunidade

Ficamos extremamente honrados que mais de 100 empresas adotaram o Jest nos últimos seis meses. Empresas como Twitter, Pinterest, Paypal, nytimes, IBM (Watson), Spotify, eBay, SoundCloud, Intuit, FormidableLabs, Automattic, Trivago e Microsoft migraram total ou parcialmente para o Jest em suas necessidades de testes JavaScript. Muito obrigado por dar uma chance a este projeto. Também agradecemos a todos que foram a conferências e meetups para falar sobre o Jest e a todos que estão escrevendo posts sobre como o Jest está funcionando (ou não) para eles!

Aqui está o que aconteceu na comunidade nos últimos dois meses:

Novos recursos, mudanças e correções no Jest 17 e 18

O Jest foi criado há mais de cinco anos e, como um framework antigo, acumulou alguma dívida técnica. Por isso, tendemos a fazer mudanças que quebram compatibilidade com mais frequência do que pode parecer necessário: Acreditamos que é importante reduzir gradualmente a dívida técnica para garantir que o Jest permaneça sustentável a longo prazo. Não anunciamos o Jest 17 em uma postagem de blog e, se você ainda não atualizou para ele no último mês, pode achar o changelog útil.

  • Breaking: Removido pit em favor de it ou test e mockImpl em favor de jest.fn() ou mockImplementation.

  • Breaking: Renomeado --jsonOutputFile para --outputFile.

  • Breaking: Atualizado testRegex para incluir arquivos test.js e spec.js.

  • Breaking: Substituído scriptPreprocessor pela nova opção transform.

  • Breaking: A função testResultsProcessor agora precisa retornar os resultados modificados.

  • Potentially Breaking: Agora resolvemos corretamente snapshotSerializers, setupFiles, transform, testRunner e testResultsProcessor com um algoritmo de resolução em vez de usar path.resolve. Isso significa principalmente que <rootDir> não é mais necessário nessas opções.

  • Added: pretty-format e jest-editor-support foram incorporados ao Jest.

  • Added: expect.any, expect.anything, expect.objectContaining, expect.arrayContaining, expect.stringMatching.

  • Added: --testResultsProcessor agora exposto via CLI.

  • Added: Implementada observação de arquivos em jest-haste-map.

  • Added: O uso do Jest no modo watch pode ser ocultado via JEST_HIDE_USAGE.

  • Added: expect.assertions(number) garante que um número específico de asserções seja feito em um teste.

  • Added: Recurso .toMatchSnapshot(?string) para nomear snapshots.

  • Added: Matchers toMatchObject, toHaveProperty, toHaveLength.

  • Added: expect.extend.

  • Added: Suporte para serializadores de snapshot personalizados.

  • Added: Diferenças grandes agora são recolhidas por padrão em snapshots e asserções. Adicionado --expand (ou -e) para mostrar a diferença completa.

  • Added: jest.resetAllMocks substitui jest.clearAllMocks.

  • Added: --json agora inclui informações sobre testes individuais dentro de um arquivo.

  • Fixed: Rejeições de promessa não tratadas em test.concurrent.

  • Fixed: babel-plugin-jest-hoist ao usar jest.mock com três argumentos.

  • Fixed: O global JSON em jest-environment-node agora vem do contexto vm em vez do contexto pai.

  • Fixed: Jest não imprime mais stack traces do Babel.

  • Fixed: Timers falsos são reiniciados quando FakeTimers.useTimers() é chamado.

  • Fixed: Expressões regulares são escapadas corretamente em snapshots.

  • Fixed: Melhoria na formatação de objetos grandes.

  • Corrigido: NaN% Failed na notificação do sistema operacional ao usar --notify.

  • Corrigido: A primeira execução de testes sem timings em cache agora usará processos separados em vez de executar em banda.

  • Corrigido: Comparações de Map/Set.

  • Corrigido: test.concurrent agora funciona com --testNamePattern.

  • Corrigido: Melhoria no matcher .toContain.

  • Corrigido: Resolução adequada de módulos com extensões de plataforma no react-native.

  • Corrigido: Objetos globais built-in em jest-environment-node agora funcionam corretamente.

  • Corrigido: Objetos mock agora são criados no contexto da vm em vez do contexto pai.

  • Corrigido: .babelrc agora faz parte da chave de cache de transform no babel-jest.

  • Corrigido: Parsing de docblock com módulos haste.

  • Corrigido: Saída com código adequado quando o limite de cobertura não é atingido.

  • Corrigido: Jest agora limpa todo o scrollback no modo watch.

  • Descontinuado: jest-react-native foi descontinuado e agora redireciona para react-native.

Planos para o Jest no primeiro semestre de 2017

Seis meses atrás compartilhamos nossos planos para o Jest e estamos felizes por termos executado bem quase todos eles. Para os próximos seis meses, eis o que planejamos:

  • Feedback instantâneo: Integração com Nuclide e um modo watch mais rápido e aprimorado.

  • Experiência do desenvolvedor aprimorada: novas APIs de mocking e asserções melhoradas.

  • Melhor desempenho e uso de memória: analisar o Jest com mais consciência sobre eficiência.

  • Melhorias em snapshots: modo de aprovação de snapshots, destaque de sintaxe e APIs aprimoradas do react-test-renderer.

  • Website: Reformularemos o site e documentação, adicionando uma folha de consulta do Jest.

Não forneceremos cronogramas ou estimativas para esses recursos, e talvez não consigamos implementar tudo. Se quiser ajudar a tornar essas ideias realidade, envie issues e pull requests com suas sugestões e vamos trabalhar juntos para melhorar o Jest em 2017.