Teste de unidade para aplicação em Node.js

Olá Pessoal.

Acredito que essa seja o meu primeiro post. =)

No momento, estou participando de um projeto em Node.js e gostaria de criar testes de unidade em Node.js. Pelo que andei pesquisando existem diversas maneiras de se fazer, bem como, tecnologias também, como jasmine, mocha e por aí vai.

Vocês que são da área a mais tempo, o que vocês tem utilizado em seus projetos?

Desde já agradeço a ajuda e sucesso a todos!

Cara, to começando a me aventurar pelo mundo JS agora também. Tenho quase certeza de que o que tenho aplicado aqui não é a melhor solução para mim e a plena certeza de que não será a melhor para você, rs
Mas como estou fazendo isso em 3 projetos distintos em cada um estou procurando usar uma abordagem diferente para aprender na prática com os problemas que vão surgindo.

Por hora estou experimentando rodar os unitários usando o karma como TestRunner e a combinação do Mocha + Chai (Asserções e Mocks), teste de integração pra validar APIs em Express usando Ava + Supertest e testes End to End eu to usando CasperJS.

Como disse, estou fazendo estas experiências por ter uma liberdade de aplicá-las na prática e com certeza é um grande aprendizado, mas eu te recomendo dar uma boa olhada no Jest (https://facebook.github.io/jest/), até agora me parece ser a ferramenta mais completa, de simples implementação e por ter uma empresa grande por trás, não vão abandonar ela quando o hype passar… rs

@DiogoMiranda , as ferramentas que o @Diego-Santos tá usando são ótimas, eu já trabalhei com elas e curti muito (Karma, Mocha, Chai). Ava e Jest são mais recentes, mas participo de grupos de JS no Telegram e já vi muita gente falando bem delas.

A única que eu não recomendo usar é o CasperJS. Já usei no passado, mas hoje não é mais necessário. O próprio Chrome já está com suporte a modo headless, e usar Xvfb também é uma boa alternativa pra rodar os testes em modo headless usando browsers reais.

Em 2014, quando comecei a mexer com PhantomJS, CasperJS, etc, os resultados entre Chrome e PhantomJS eram muito parecidos, então usar PhantomJS te dava uma confiança maior. Isso acontecia porque o Chrome, até 2013, usava a mesma engine do PhantomJS (Webkit), mas com o tempo, com as atualizações do Chrome e com o próprio release 2.0 do PhantomJS, vc obtinha resultados muito diferentes, sem falar dos problemas de estabilidade e de rapidez (o Chrome se comportava tão rápido quanto).

Inclusive, há uns meses atrás, teve uma thread de e-mail de um dos devs do PhantomJS abandonando o projeto e recomendando a usar o Chrome headless https://groups.google.com/forum/#!topic/phantomjs/9aI5d-LDuNE :smile:

@diego-santos eu to tendo experiência utilizando o Jest e vem sendo um framework muito legal de se trabalhar e por ser o facebook que mantém, eu acredito que vai ficar cada vez melhor! Junto com o Jest, para a camada de cima, eu to usando uma lib chamada Nighmare (http://codecept.io/nightmare/) para usar o motor do selenium. Vale a pena! é muito fixe =)

@Diego-Santos e @stefanteixeira, primeiramente agradeço pelo retorno. Sobre o ideal, realmente está cada mais difícil de se saber. Afinal, de tempinho em tempinho aparece uma tecnologia nova a se trabalhar. Como estou iniciando nessa jornada em Node.js, acredito que consigo pegar essa combinação de Mocha + Chai (Asserções e Mocks) para realizar os meus testes de unidade. Sobre os End to End já fiz uns projetos utilizando Protractor.js tanto para Angular.js quanto para Aplicações “Post-Back”. Achei sensacional essa tecnologia!

No mais agradeço pelo retorno e bora botar essa “p…” pra rodar. Um grande abraço.

@stefanteixeira Sabe dizer se esse modo headless do Chrome pode ser usado com o Selenium WebDriver?

@andrethiago opa, creio que seja só passar o argumento headless pro ChromeOptions. Dá uma olhada nesse post e depois diz se funcionou https://intoli.com/blog/running-selenium-with-headless-chrome/

Não esqueça de atualizar o chromedriver pra versão mais recente, assim como usar a versão mais recente do Chrome.

@diogomiranda valeu! E quando precisar de mocks/stubs/spies, vai de Sinon.js, que é a melhor lib em JS pra isso, de longe.

@stefanteixeira Valeu! Tava usando o HtmlUnitDriver pra isso. Vou tentar com o Chrome.

@stefanteixeira, obrigado! Com certeza irei estudar também. Afinal, testes está na veia. =)

Quero aproveitar também para deixar em post um link sobre dev. orientado a testes… em node.js:

Youtube Video

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.