it-swarm.com.de

Codeabdeckung mit Mokka

Ich benutze Mocha zum Testen meiner NodeJS-Anwendung. Ich kann nicht herausfinden, wie die Codeabdeckungsfunktion verwendet wird. Ich habe versucht, es zu googeln, aber kein richtiges Tutorial gefunden. Bitte helfen Sie.

262
tusharmath

Sie benötigen eine zusätzliche Bibliothek für die Codeabdeckung, und Sie werden begeistert sein, wie leistungsfähig und einfach istanbul ist. Versuchen Sie Folgendes, nachdem Sie Ihre Mokka-Tests bestanden haben:

npm install nyc

Stellen Sie nun einfach den Befehl nyc vor Ihren vorhandenen Testbefehl, zum Beispiel:

{
  "scripts": {
    "test": "nyc mocha"
  }
}
375
Dan Kohn

Jetzt ( 2019 ) wird istanbul bevorzugt über die hochmoderne Befehlszeilenschnittstelle "verwendet "nyc .

Konfiguration

Installieren Sie es zunächst in Ihrem Projekt mit

npm i nyc --save-dev

Wenn Sie ein npm-basiertes Projekt haben, ändern Sie einfach das Testskript im scripts -Objekt Ihrer package.json -Datei, um die Codeabdeckung Ihrer mocha auszuführen = Tests:

{
  "scripts": {
    "test": "nyc --reporter=text mocha"
  }
}

Lauf

Führen Sie nun Ihre Tests durch

npm test

und Sie werden eine Tabelle wie diese in Ihrer Konsole sehen, direkt nach Ihrer Testausgabe:

Istanbul Nyc Mocha code coverage

Anpassung

HTML-Bericht

Benutz einfach

nyc --reporter=html

anstelle von text. Jetzt wird ein Bericht in ./coverage/index.html Erstellt.

Berichtsformate

Istanbul unterstützt eine Vielzahl von Berichtsformaten. Schauen Sie sich einfach die Berichtsbibliothek an, um die für Sie nützlichste zu finden. Fügen Sie einfach eine --reporter=REPORTER_NAME - Option für jedes gewünschte Format hinzu. Zum Beispiel mit

nyc --reporter=html --reporter=text

sie haben sowohl die Konsole als auch den HTML-Bericht.

Führen Sie keine Berichterstattung mit dem npm-Test durch

Fügen Sie einfach ein weiteres Skript in Ihr package.json Ein und verlassen Sie das Skript test nur mit Ihrem Testläufer (z. B. Mokka):

{
  "scripts": {
    "test": "mocha",
    "test-with-coverage": "nyc --reporter=text mocha"
  }
}

Führen Sie nun dieses benutzerdefinierte Skript aus

npm run test-with-coverage

um Tests mit Codeabdeckung durchzuführen.

Test schlägt fehl, wenn die Codeabdeckung niedrig ist

Fehlschlagen, wenn die gesamte Codeabdeckung unter 90% liegt:

nyc --check-coverage --lines 90 

Fehler, wenn die Codeabdeckung mindestens einer Datei unter 90% liegt:

nyc --check-coverage --lines 90 --per-file
108
lifeisfoo

Blanket.js funktioniert auch perfekt.

npm install --save-dev blanket

vor deinem test/tests.js

require('blanket')({
    pattern: function (filename) {
        return !/node_modules/.test(filename);
    }
});

lauf mocha -R html-cov > coverage.html

19
jsan