AVA.JS: Um test runner futurístico — Parte 1

Raphael
3 min readNov 23, 2016

--

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ê 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:

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:

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! o/

AVA.JS: Um test runner futurístico — parte 2

--

--