Estou usando o Mocha para testar meu aplicativo NodeJS. Não consigo descobrir como usar seu recurso de cobertura de código. Tentei pesquisar no Google, mas não encontrei nenhum tutorial adequado. Por favor ajude.
Estou usando o Mocha para testar meu aplicativo NodeJS. Não consigo descobrir como usar seu recurso de cobertura de código. Tentei pesquisar no Google, mas não encontrei nenhum tutorial adequado. Por favor ajude.
Respostas:
Você precisa de uma biblioteca adicional para cobertura de código e ficará impressionado com o quão fácil e poderoso é Istambul . Tente o seguinte, depois de passar nos testes de mocha:
npm install nyc
Agora, basta colocar o comando nyc na frente do comando de teste existente, por exemplo:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
é um atalho canônico para ./node_modules/.bin/
e istanbul/lib/cli.js
está aliasado istanbul
na pasta bin. Então, aqui está um comando mais curto:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Agora ( 2020 ) a maneira preferida de usar Istambul é através de sua "interface de linha de comando de última geração" nyc .
Primeiro, instale-o no seu projeto com
npm i nyc --save-dev
Então, se você tiver um projeto baseado em npm, basta alterar o script de teste dentro do scripts
objeto do seu arquivo package.json para executar a cobertura do código dos seus testes mocha :
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Agora execute seus testes
npm test
e você verá uma tabela como esta em seu console, logo após a saída dos testes:
Apenas use
nyc --reporter=html
em vez de text
. Agora ele produzirá um relatório dentro ./coverage/index.html
.
Istambul suporta uma ampla variedade de formatos de relatório. Basta olhar para a biblioteca de relatórios para encontrar o mais útil para você. Basta adicionar uma --reporter=REPORTER_NAME
opção para cada formato desejado. Por exemplo, com
nyc --reporter=html --reporter=text
você terá o console e o relatório html.
Basta adicionar outro script no seu package.json
e deixar o test
script apenas com o seu executor de teste (por exemplo, mocha):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
Agora execute esse script personalizado
npm run test-with-coverage
para executar testes com cobertura de código.
Falha se a cobertura total do código estiver abaixo de 90%:
nyc --check-coverage --lines 90
Falha se a cobertura do código de pelo menos um arquivo estiver abaixo de 90%:
nyc --check-coverage --lines 90 --per-file
--reporter=html
habilitado, mas o arquivo html é esvaziar sempre, não há nada mostrado sobre blocos descobertos ou% coberto etc cabeçalhos apenas da tabela
O Blanket.js também funciona perfeitamente.
npm install --save-dev blanket
na frente do seu test / tests.js
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
corre mocha -R html-cov > coverage.html
istanbul cover node_modules/mocha/bin/_mocha
.