Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lições que o Chai pode te Ensinar

Lições que o Chai pode te Ensinar

Lucas Fernandes da Costa

June 04, 2016
Tweet

More Decks by Lucas Fernandes da Costa

Other Decks in Programming

Transcript

  1. Chai é uma library de assertions para o Node •

    API fluida e flexível • Escrita muito próxima do inglês • Extensível • Sem dependências externas chaijs.com * Falar do chaining * Suporte à plugins/extensões * Dependências são todas nossas
  2. Código não é tudo, mas é bem legal • Documentação

    é tão importante quanto código • Responda issues • Leia Pull Requests * Maior parte do tempo eu respondo e reviso em vez de codar * Responder dúvidas dos outros usuários e dar dicas
  3. Você já sabe o suficiente, você só precisa entender o

    código • Entenda o software antes de tentar entender o código • Não tente entender tudo de uma só vez • Resolva um problema e, na dúvida, pergunte * Entenda o core * Deixe outras utilidades pra depois
  4. Fique atento ao contexto • Leia as referências • Veja

    o histórico (gitk) • Use a caixa de busca * Uma issue pode travar a outra * Ver no histórico referências a issues ou PRs
  5. Seja amigável e acessível • Nada é óbvio • Comece

    suas respostas agradecendo • Código não é pessoal • Use esse emoji :smile: Um bom tom motiva as pessoas a continuarem contribuindo * Vários canais de comunicação (Slack, IRC, Email) * O foco é conseguir mais contribuidores e levar o projeto pra frente
  6. Seja o mais informativo possível • Não diga apenas o

    que deve ser feito, diga como fazer • Compartilhe links (Artigos, MDN…) • Faça referências (issues parecidas, PRs anteriores) • Escreva exemplos Os primeiros commits são sempre os mais difíceis * No começo os PRs se faziam quase sozinhos, orientações muito precisas * Exemplos de uso ajudam na hora de saber o escopo * Depois dos primeiros commits se entende o contexto
  7. Organize suas issues • Crie labels de acordo com: •

    A dificuldade da tarefa • O tipo de tarefa • Deixe claro quando um PR é desejado/necessário
  8. SOBRE FAZER CÓDIGO a.k.a. engenharia de software (e outras coisas

    mais) Agora começa a parte de ferramentas
  9. Documentação • Código documentado ajuda tanto quem utiliza quanto quem

    escreve o software • Documentação gerada a partir de uma só fonte (código) diminui a possibilidade de informações conflitantes • Dox + Jekyll
  10. Mantendo as Dependências Atualizadas Pull Requests automáticos sempre que uma

    dependência sai do range do package.json ou quebra o build
  11. Code Review • Todos os commits são revisados por pelo

    menos duas outras pessoas • O objetivo do review é unicamente garantir a qualidade do código • Pratique o egoless coding
  12. Extensibilidade • Mantém o core enxuto • Funcionalidades de nicho

    ficam encapsuladas em outros módulos menores • Eventualmente plugins transformam-se em features oficiais
  13. Cobrindo código em todas as plataformas 1. Código passa pelo

    browserify 2. É instrumentado usando Istanbul 3. Testes locais rodam no PhantomJS e node 4. Testes remotos rodam em "todos" os browsers 5. Resultados de todos os ambientes são mergeados (lcov-result-merger) 6. Resultados são enviados para o coveralls
  14. Usando o Chai para testar o Chai Já sabemos que

    um determinado resultado está correto, só queremos saber se a asserção sobre ele vai falhar ou não