Introscópio: bem, teste de unidade muito preguiçoso

No trabalho, escrevemos muitas lógicas de negócios que mudam frequentemente em JS (inicialização). Até demais. E quero testar tudo isso fora do antigo hábito, mas de alguma forma mais rápido, para que os testes não interfiram com o govnokod quando necessário, e a estrutura dos módulos não seja particularmente personalizada para os testes. Em algum momento, surgiu o pensamento de que ele também poderia ser automatizado de alguma forma com a ajuda de um simples plug-in babel, para que, de início, resultasse em todas as variáveis ​​e métodos privados em um ambiente de teste, mas não o afetaria na produção. Acabou sendo bastante simples e divertido. Foi assim que surgiu o Introscope , com o qual agora estamos testando tudo mais ou menos complicado.


Depois de entregar o projeto, fiquei distraído por vários meses para melhorar a implantação e o monitoramento, repousou, estimava Habr, e quando precisei testar algo novamente, fiquei imediatamente encantado com minha própria ferramenta! Isso não acontece comigo frequentemente. Mais precisamente, nunca foi. Então, acho que a coisa funciona. Espero que você também seja útil.


Resumidamente, o que isso pode fazer?


  1. Agrupa o módulo inteiro em uma função de fábrica para que você possa criar quantos módulos novos durante o teste for necessário. Isso elimina a necessidade de desbloquear.
  2. Como o módulo é empacotado, o tulza sabe exatamente quais variáveis ​​o módulo importa e pode gerar moki por seu tipo. Isso funciona muito bem para um estilo mais ou menos funcional.
  3. Ele é capaz de registrar chamadas e argumentos para funções de módulos externos e colocar tudo em um log, que é então maravilhosamente serializado para snapshots (se você usar o Jest, tudo começará imediatamente).
  4. Recurso assassino: pode salvar o resultado da chamada de uma função externa e usá-la para testes adicionais. É muito conveniente ao testar solicitações de serviços externos que costumávamos levar ao moki com nossas mãos.
  5. Em combinação com o Jest, os testes são atualizados pressionando um botão U (não estou brincando), que atualiza os instantâneos. Abordagem de teste de ouro em toda a sua glória.
  6. Trabalha em produção há quase um ano.

Como resultado


Os testes começaram a ser escritos por pessoas que nem sequer queriam saber sobre eles, porque você só precisa chamar a função com os parâmetros necessários e salvar o log do que aconteceu nessa função com um botão. Eu só queria testar outra coisa ...


Link: Introscópio (também existem screencasts de gif!). Eu ficaria muito feliz por críticas construtivas e links para o mesmo, mas feito muito melhor: D


imagem

Source: https://habr.com/ru/post/pt437104/


All Articles