Desenvolvimento

19 jan, 2017

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

Publicidade

Na primeira parte desta série, falamos sobre como instalar e rodar seu primeiro teste com o AVA.js. Agora, vamos ver como configurá-lo para que ele se adapte ao seu projeto e suas preferências.

Arquivos personalizados

Já vimos que o AVA tem como padrão o arquivo test.js. Mas existe algumas maneiras de configurá-lo para enxergar outros aquivos ou ir para um diretório específico. A mais simples delas é passando o argumento direto no comando:

"scripts": {
  "test": "ava ./tests/*"
}

É possível deixar seus testes separados em diversos diretórios:

"scripts": {
  "test": "ava **/*.spec.js"
}

Para deixar nossa configuração mais legível, podemos colocar isso dentro do objeto AVA no package.json. Fica assim:

"scripts": {
  "test": "ava"
},
"ava": {
  "files": [
    "**/*.spec.js"
  ]
}

Babel

Caso seu projeto use Babel, basta acrescentá-lo no package.json:

"scripts": {
  "test": "ava"
},
"ava": {
  "files": [
    "**/*.spec.js"
  ],
  "require": [
    "babel-register"
  ],
  "babel": "inherit"
}

Saída no console

Após a configuração do ambiente de testes, você poderá configurar a saída do resultados dos testes no console. Existem três opções:

default:

verbose:

Permite ver os detalhes de cada teste de forma mais clara. Basta acrescentar “verbose”: true ao seu package.json.

Tap:

O AVA possui suporte a todos os tap reporters. Por exemplo, você pode usar o tap-nyan com o comando ava –tap | tap-nyan.

Coverage

Caso queria um relatório da atual cobertura do código no seu projeto, você pode usar o nyc. A utilização é bem simples: basta adicionar como dependência do seu projeto e adicionar o script “coverage”, como no exemplo abaixo:

"scripts": {
  "test": "ava"
  "coverage": "nyc npm test"
},
"ava": {
  "files": [
    "**/*.spec.js"
  ],
  "require": [
    "babel-register"
  ],
  "babel": "inherit"
}

Watcher

Outra feature importante para ser acrescentada é assistir as modificações em seu código e rodar os testes novamente. Essa é uma prática que ajuda bastante e pode ser feita com a opção -w. Assim:

"scripts": {
  "test": "ava"
  "watch:test": "npm test -- -w"
}

No fim, nosso package.json ficou da seguinte forma:

"scripts": {
  "test": "ava"
  "coverage": "nyc npm test"
  "watch:test": "npm test -- -w"
},
"ava": {
  "files": [
    "**/*.spec.js"
  ],
  "require": [
    "babel-register"
  ],
  "babel": "inherit"
}

Existem ainda outras configurações possíveis, que podem ser encontradas no repositório do AVA.js.

No próximo artigo, vou mostrar exemplos de testes mais parecidos com os nossos projetos reais. Até a próxima!

***

Artigo publicado originalmente em: http://www.concretesolutions.com.br/2017/01/02/ava-js-test-runner-futuristico-2/