Używam Mocha do testowania mojej aplikacji NodeJS. Nie jestem w stanie dowiedzieć się, jak korzystać z funkcji pokrycia kodu. Próbowałem google, ale nie znalazłem odpowiedniego tutoriala. Proszę pomóż.
Używam Mocha do testowania mojej aplikacji NodeJS. Nie jestem w stanie dowiedzieć się, jak korzystać z funkcji pokrycia kodu. Próbowałem google, ale nie znalazłem odpowiedniego tutoriala. Proszę pomóż.
Odpowiedzi:
Potrzebujesz dodatkowej biblioteki do pokrycia kodu, a oczaruje Cię, jak potężny i łatwy jest Stambuł . Po zaliczeniu testów mokki spróbuj wykonać następujące czynności:
npm install nyc
Teraz po prostu umieść polecenie nyc przed istniejącym poleceniem testowym, na przykład:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
jest kanonicznym skrótem do ./node_modules/.bin/
iistanbul/lib/cli.js
jest aliasem istanbul
w folderze bin. Oto krótsze polecenie:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Teraz ( 2020 ) preferowanym sposobem korzystania ze Stambułu jest „najnowocześniejszy interfejs wiersza poleceń” nyc .
Najpierw zainstaluj go w swoim projekcie za pomocą
npm i nyc --save-dev
Następnie, jeśli masz projekt oparty na npm, po prostu zmień skrypt testowy wewnątrz scripts
obiektu pliku package.json , aby wykonać pokrycie kodu testów mokka :
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Teraz uruchom testy
npm test
i zobaczysz taką konsolę w konsoli, zaraz po zakończeniu testów:
Po prostu użyj
nyc --reporter=html
zamiast text
. Teraz wygeneruje raport w środku ./coverage/index.html
.
Stambuł obsługuje szeroki zakres formatów raportów. Wystarczy spojrzeć na bibliotekę raportów, aby znaleźć najbardziej przydatne dla Ciebie. Po prostu dodaj --reporter=REPORTER_NAME
opcję dla każdego formatu, który chcesz. Na przykład za pomocą
nyc --reporter=html --reporter=text
będziesz mieć zarówno konsolę, jak i raport HTML.
Po prostu dodaj do skryptu kolejny skrypt package.json
i zostaw go test
ze swoim testerem (np. Mokka):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
Teraz uruchom ten niestandardowy skrypt
npm run test-with-coverage
przeprowadzać testy z pokryciem kodu.
Niepowodzenie, jeśli całkowity zasięg kodu wynosi poniżej 90%:
nyc --check-coverage --lines 90
Niepowodzenie, jeśli zasięg kodu co najmniej jednego pliku jest mniejszy niż 90%:
nyc --check-coverage --lines 90 --per-file
--reporter=html
włączone, ale plik html jest zawsze pusty, nic nie jest pokazywane w niepokrytych blokach lub% pokrytych itp. Tylko nagłówki tabeli
Blanket.js również działa idealnie.
npm install --save-dev blanket
przed twoim testem / tests.js
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
biegać mocha -R html-cov > coverage.html
istanbul cover node_modules/mocha/bin/_mocha
.