Tôi đang sử dụng Mocha để thử nghiệm ứng dụng NodeJS của mình. Tôi không thể tìm ra cách sử dụng tính năng bao phủ mã của nó. Tôi đã thử googling nó nhưng không tìm thấy bất kỳ hướng dẫn thích hợp. Xin vui lòng giúp đỡ.
Tôi đang sử dụng Mocha để thử nghiệm ứng dụng NodeJS của mình. Tôi không thể tìm ra cách sử dụng tính năng bao phủ mã của nó. Tôi đã thử googling nó nhưng không tìm thấy bất kỳ hướng dẫn thích hợp. Xin vui lòng giúp đỡ.
Câu trả lời:
Bạn cần một thư viện bổ sung cho phạm vi bảo hiểm mã, và bạn sẽ bị thổi bay bởi istanbul mạnh mẽ và dễ dàng như thế nào . Hãy thử làm như sau, sau khi bạn vượt qua bài kiểm tra mocha của mình:
npm install nyc
Bây giờ, chỉ cần đặt lệnh nyc trước lệnh kiểm tra hiện tại của bạn, ví dụ:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
là một lối tắt chính tắc đến ./node_modules/.bin/
và istanbul/lib/cli.js
được đặt bí danh istanbul
trong thư mục bin. Vì vậy, đây là một lệnh ngắn hơn:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Bây giờ ( 2020 ) cách ưa thích để sử dụng istanbul là thông qua "giao diện dòng lệnh nghệ thuật" nyc .
Đầu tiên, cài đặt nó trong dự án của bạn với
npm i nyc --save-dev
Sau đó, nếu bạn có một dự án dựa trên npm, chỉ cần thay đổi tập lệnh kiểm tra bên trong scripts
đối tượng của tệp pack.json để thực thi phạm vi bảo hiểm mã của các bài kiểm tra mocha của bạn :
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Bây giờ hãy chạy thử nghiệm của bạn
npm test
và bạn sẽ thấy một bảng như thế này trong bảng điều khiển của bạn, ngay sau khi kết quả kiểm tra của bạn:
Chỉ dùng
nyc --reporter=html
thay vì text
. Bây giờ nó sẽ tạo ra một báo cáo bên trong ./coverage/index.html
.
Istanbul hỗ trợ một loạt các định dạng báo cáo. Chỉ cần nhìn vào thư viện báo cáo của nó để tìm thấy hữu ích nhất cho bạn. Chỉ cần thêm một --reporter=REPORTER_NAME
tùy chọn cho mỗi định dạng bạn muốn. Ví dụ với
nyc --reporter=html --reporter=text
bạn sẽ có cả bảng điều khiển và báo cáo html.
Chỉ cần thêm một tập lệnh khác vào của bạn package.json
và để lại test
tập lệnh chỉ với người chạy thử nghiệm của bạn (ví dụ: mocha):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
Bây giờ chạy tập lệnh tùy chỉnh này
npm run test-with-coverage
để chạy thử nghiệm với phạm vi bảo hiểm mã.
Thất bại nếu tổng phạm vi bảo hiểm dưới 90%:
nyc --check-coverage --lines 90
Không thành công nếu phạm vi bảo hiểm của ít nhất một tệp dưới 90%:
nyc --check-coverage --lines 90 --per-file
--reporter=html
kích hoạt nhưng tệp html luôn trống, không có gì hiển thị về các khối chưa được khám phá hoặc% được bảo hiểm, v.v. chỉ là các tiêu đề của bảng
Chăn.js cũng hoạt động hoàn hảo.
npm install --save-dev blanket
ở phía trước bài kiểm tra / tests.js của bạn
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
chạy mocha -R html-cov > coverage.html
istanbul cover node_modules/mocha/bin/_mocha
.