Ich verwende 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.
Ich verwende 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.
Antworten:
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
Platzieren Sie nun einfach den Befehl nyc vor Ihrem vorhandenen Testbefehl, zum Beispiel:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
ist eine kanonische Verknüpfung zu ./node_modules/.bin/
und istanbul/lib/cli.js
ist istanbul
im bin-Ordner aliasiert . Also hier ist ein kürzerer Befehl:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Jetzt ( 2020 ) wird Istanbul bevorzugt über die "State-of-the-Art-Befehlszeilenschnittstelle" nyc verwendet .
Installieren Sie es zunächst in Ihrem Projekt mit
npm i nyc --save-dev
Wenn Sie ein npm-basiertes Projekt haben, ändern scripts
Sie einfach das Testskript im Objekt Ihrer Datei package.json , um die Codeabdeckung Ihrer Mokka- Tests auszuführen :
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Führen Sie nun Ihre Tests aus
npm test
und Sie werden eine Tabelle wie diese in Ihrer Konsole sehen, gleich nach der Ausgabe Ihrer Tests:
Benutz einfach
nyc --reporter=html
statt text
. Jetzt wird ein Bericht erstellt ./coverage/index.html
.
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 --reporter=REPORTER_NAME
Sie einfach eine 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ügen Sie einfach ein weiteres Skript in Ihr Skript ein package.json
und lassen Sie das test
Skript nur bei 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
Tests mit Codeabdeckung ausführen.
Fehler, wenn die gesamte Codeabdeckung unter 90% liegt:
nyc --check-coverage --lines 90
Fehler, wenn die Codeabdeckung von mindestens einer Datei unter 90% liegt:
nyc --check-coverage --lines 90 --per-file
--reporter=html
aktiviert, aber die HTML-Datei ist immer leer, es wird nichts über nicht abgedeckte Blöcke oder% abgedeckt usw. angezeigt, nur Überschriften der Tabelle
Blanket.js funktioniert auch perfekt.
npm install --save-dev blanket
vor Ihrem test / tests.js
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
Lauf mocha -R html-cov > coverage.html
istanbul cover node_modules/mocha/bin/_mocha
.