Desenvolvimento

9 jan, 2017

AVA.js: um test runner futurístico – Parte 01

Publicidade

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:

1-_s5xsfhfaem1xkoisjcyvg

Para testarmos como seria o feedback de um erro, podemos adicionar t.fail(‘error message’); dentro da função test.

1-xyev4471wolpusfkqqobjq

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:

1-lnj-cohhau__5qsuj8voww

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/