Saya menggunakan Mocha untuk menguji aplikasi NodeJS saya. Saya tidak dapat menemukan cara menggunakan fitur jangkauan kode-nya. Saya mencoba googling tetapi tidak menemukan tutorial yang tepat. Tolong bantu.
Saya menggunakan Mocha untuk menguji aplikasi NodeJS saya. Saya tidak dapat menemukan cara menggunakan fitur jangkauan kode-nya. Saya mencoba googling tetapi tidak menemukan tutorial yang tepat. Tolong bantu.
Jawaban:
Anda memerlukan perpustakaan tambahan untuk cakupan kode, dan Anda akan terpesona oleh seberapa kuat dan mudah istanbul itu. Coba yang berikut ini, setelah Anda lulus tes moka:
npm install nyc
Sekarang, cukup tempatkan perintah nyc di depan perintah tes yang ada, misalnya:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
adalah jalan pintas kanonik ke ./node_modules/.bin/
, dan istanbul/lib/cli.js
alias ke istanbul
dalam folder bin. Jadi, inilah perintah yang lebih pendek:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Sekarang ( 2020 ) cara yang lebih disukai untuk menggunakan istanbul adalah melalui antarmuka "state of the art command line" nyc .
Pertama, instal di proyek Anda dengan
npm i nyc --save-dev
Kemudian, jika Anda memiliki proyek berbasis npm, cukup ubah skrip pengujian di dalam scripts
objek file package.json Anda untuk mengeksekusi cakupan kode pengujian mocha Anda :
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Sekarang jalankan tes Anda
npm test
dan Anda akan melihat tabel seperti ini di konsol Anda, tepat setelah hasil tes Anda:
Gunakan saja
nyc --reporter=html
bukannya text
. Sekarang akan menghasilkan laporan di dalamnya ./coverage/index.html
.
Istanbul mendukung beragam format laporan. Lihat saja perpustakaan laporannya untuk menemukan yang paling berguna bagi Anda. Cukup tambahkan --reporter=REPORTER_NAME
opsi untuk setiap format yang Anda inginkan. Misalnya dengan
nyc --reporter=html --reporter=text
Anda akan memiliki konsol dan laporan html.
Cukup tambahkan skrip lain di dalam Anda package.json
dan tinggalkan test
skrip dengan hanya pelari ujian Anda (mis. Mocha):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
Sekarang jalankan skrip khusus ini
npm run test-with-coverage
untuk menjalankan tes dengan cakupan kode.
Gagal jika cakupan kode total di bawah 90%:
nyc --check-coverage --lines 90
Gagal jika cakupan kode dari setidaknya satu file di bawah 90%:
nyc --check-coverage --lines 90 --per-file
--reporter=html
diaktifkan tetapi file html selalu kosong, tidak ada yang ditampilkan tentang blok yang tidak ditemukan atau% tertutup dll. Hanya header tabel
Blanket.js juga berfungsi dengan sempurna.
npm install --save-dev blanket
di depan tes / tests.js Anda
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
Lari mocha -R html-cov > coverage.html
istanbul cover node_modules/mocha/bin/_mocha
.