Nota do tradutor
Esta é a tradução de code-coverage.md. Este link compara a versão em que se baseou esta tradução com a última versão disponível no branch master
do AVA. Se não houver mudanças em code-coverage.md
, então a tradução está atualizada.
Traduções: Español, Français, Italiano, 日本語
Como o AVA gera os arquivos de teste, você não pode usar istanbul
para cobertura de código; mas você pode conseguir isso com nyc
, que é basicamente istanbul
com suporte para subprocessos.
Primeiro, instale o NYC:
$ npm install nyc --save-dev
Em seguida, adicione os diretórios .nyc_output
e coverage
a seu arquivo .gitignore
.
.gitignore
:
node_modules
coverage
.nyc_output
Usar NYC para fornecer cobertura para o código de produção escrito em ES5 é simples. Basta preceder seu script de teste com nyc
:
{
"scripts": {
"test": "nyc ava"
}
}
É isso!
Se você deseja criar relatórios de cobertura HTML, ou carregar dados de cobertura para o Coveralls, você deve pular para as seções abaixo.
Usar Babel para transpilar seu código de produção é um pouco mais complicado. Aqui, dividimos essa tarefa em vários passos.
Em primeiro lugar, precisamos de uma configuração do Babel. O que se segue é apenas um exemplo. Você terá que modificá-lo para atender às suas necessidades.
package.json
:
{
"babel": {
"presets": ["es2015"],
"plugins": ["transform-runtime"],
"ignore": "test.js",
"env": {
"development": {
"sourceMaps": "inline"
}
}
}
}
Há duas coisas importantes a serem observadas a partir do exemplo acima.
-
Nós ignoramos arquivos de teste porque o AVA já faz o transpiling de testes para você.
-
Nós especificamos source maps
inline
para o desenvolvimento. Isso é importante para gerar corretamente a cobertura. Usando a seçãoenv
da configuração do Babel nos permite desativar os source maps para compilações de produção.
Como é pouco provável que você queira source maps inline
em seu código de produção, você deve especificar uma variável de ambiente alternativa em seus scripts de compilação:
package.json
{
"scripts": {
"build": "BABEL_ENV=production babel --out-dir=dist index.js"
}
}
ATENÇÃO:
BABEL_ENV=production
não funciona no Windows, você deve usar a palavra-chaveset
(set BABEL_ENV=production
). Para compilações multiplataforma, confiracross-env
.
Observe que o script de compilação realmente tem muito pouco a ver com o AVA, e é apenas uma demonstração de como usar a configuração env
do Babel para manipular sua configuração, de modo a troná-lo compatível com o AVA.
Para utilizar o hook require do Babel, adicione babel-core/register
à seção require
da configuração de seu AVA em package.json
.
{
"ava": {
"require": ["babel-core/register"]
}
}
Observação: Você também pode definir o hook require pela linha de comando: ava --require=babel-core/register
. No entanto, configurando-o em package.json
evita que você precise digitar repetidamente essa flag.
Combinando os passos acima, seu package.json
completo deve ser algo parecido com isto:
{
"scripts": {
"test": "nyc ava",
"build": "BABEL_ENV=production babel --out-dir=dist index.js"
},
"babel": {
"presets": ["es2015"],
"plugins": ["transform-runtime"],
"ignore": "test.js",
"env": {
"development": {
"sourceMaps": "inline"
}
}
},
"ava": {
"require": ["babel-core/register"]
}
}
NYC cria um arquivo de cobertura json
para cada processo bifurcado no diretório .nyc_ouput
.
Para combiná-los em um relatório HTML legível, faça o seguinte:
$ ./node_modules/.bin/nyc report --reporter=html
Ou, utilize um script npm para poupar digitação:
{
"scripts": {
"report": "nyc report --reporter=html"
}
}
Isto produzirá um arquivo HTML no diretório coverage
.
Primeiro, você deve logar em coveralls.io e ativar seu repositório.
Depois disso, adicione coveralls
como uma dependência de desenvolvimento:
$ npm install coveralls --save-dev
Em seguida, adicione o seguinte ao seu .travis.yml
:
after_success:
- './node_modules/.bin/nyc report --reporter=text-lcov | ./node_modules/.bin/coveralls'
Seu relatório de cobertura aparecerá, então, no coveralls pouco após o Travis ser concluído.