Ultimamente, tenho dedicado meu tempo livre ao fitch.js, um projeto open source que surgiu de uma ideia bem simples: simplificar e potencializar o uso de Fetch. Com isso, tenho buscado usar ferramentas mais novas e simples, não somente para melhorar o código, mas também para aprender coisas novas.
Nesse tempo, conheci o AVA.js (“eiva”), que me impressionou por sua simplicidade. Não havia usado ainda, então, pensei que demoraria um pouco para aprender e começar a usar de verdade. Mas não demorou, e você vai entender o porquê logo abaixo.
Primeiramente, o que é esse AVA?
O AVA é um test runner para JavaScript que se diferencia por ser rápido, simples e ter uma curva de aprendizado bem leve.
No repositório existe uma descrição que pode nos ajudar a entender como isso funciona:
“Mesmo que o JavaScript seja single-threaded, IO’s em Node.js podem ocorrer em paralelo devido à sua natureza assíncrona. O AVA tira vantagem disso e roda seus testes simultaneamente, o que é especialmente benéfico para testes pesados de IO. Além disso, os arquivos de teste são executados em paralelo como processos separados, proporcionando um desempenho ainda melhor e um ambiente isolado para cada arquivo de teste. A substituição de Mocha por AVA no Pageres diminuiu o tempo dos testes de 31 para 11 segundos. Ter testes executados simultaneamente força você a escrever atomic tests, ou seja, os testes não dependem do estado global ou do estado de outros testes, o que é muito bom!”
Existem outras coisas bem legais sobre ele, mas prefiro mostrar isso na prática. Vamos pular para a parte boa!
Instalação
Instale o AVA usando NPM ou Yarn:
# usando npm npm i -g ava # ou usando o yarn yarn global add ava # após a instalação, inicie o ava com o comando: ava --init
Com isso, seu package.json ficará parecido com isso:
{ "name": "meu-projeto", "scripts": { "test": "ava" }, "devDependencies": { "ava": "^0.17.0" } }
Primeiro teste
Pronto, você já pode usar o AVA para rodar os seus testes. Para isso, vamos criar o arquivo test.js na raiz do nosso projeto e colocar o seguinte conteúdo:
import test from 'ava'; test('foo', t => { t.pass(); });
Agora rode o comando npm test e veja como o feedback no terminal, é bem simples:
Para testarmos como seria o feedback de um erro, podemos adicionar t.fail(‘error message’); dentro da função test.
Utilizando uma situação mais realista, substitua o teste anterior por este:
const foo = 'bar'; t.is(typeof foo, 'object', 'is a object');
A saída deste teste será um pouco mais detalhada. Veja:
Existem diversas configurações possíveis e muitas outras coisas que o AVA nos proporciona, mas isso ficará para a próxima parte, na qual vamos ver como configurar o AVA para rodar de acordo com seu projeto.
Tem alguma dúvida ou comentário? Compartilhe conosco!
Espero você na próxima!
***
Artigo publicado originalmente em: http://www.concretesolutions.com.br/2016/12/27/ava-js-1/