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

Avatar for Lucas Fernandes da Costa

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