मोचा के साथ कोड कवरेज


288

मैं अपने नोड्स एप्लिकेशन के परीक्षण के लिए मोचा का उपयोग कर रहा हूं। मैं यह पता नहीं लगा पा रहा हूं कि इसकी कोड कवरेज सुविधा का उपयोग कैसे किया जाए। मैंने इसे गुगली करने की कोशिश की, लेकिन कोई उचित ट्यूटोरियल नहीं मिला। कृपया मदद कीजिए।

जवाबों:


410

आपको कोड कवरेज के लिए एक अतिरिक्त पुस्तकालय की आवश्यकता है, और आप कितनी शक्तिशाली और आसान इतनबुल है इससे उड़ा जा रहे हैं । पास करने के लिए अपने मोचा परीक्षण प्राप्त करने के बाद, निम्नलिखित प्रयास करें:

npm install nyc

अब, उदाहरण के लिए, अपने मौजूदा परीक्षण कमांड के सामने कमांड nyc रखें:

{
  "scripts": {
    "test": "nyc mocha"
  }
}

30
और अगर आप मोचा का स्थानीय रूप से स्थापित संस्करण चला रहे हैं, तो प्रयास करें istanbul cover node_modules/mocha/bin/_mocha
एरिक मैक्कार्थी

102
या, स्थानीय रूप से istanbul और mocha दोनों को स्थापित करें, और अपने पैकेज के स्क्रिप्ट अनुभाग में निम्नलिखित जोड़ें। Json और उसके बाद बस npm रन कवरेज: "कवरेज": "./ode_modules/istanbul/lib/bli.js कवर ।/node_modules/। मोचा / bin / _mocha - --ui BDD आर कल्पना आयकर 5000
दान कोह्न

6
मुझे विंडोज़ पर चलने के लिए इस कमांड को प्राप्त करने में समस्या थी, लेकिन मोचा बिन के लिए पूर्ण पथ निर्दिष्ट करके मैं इसे काम करने में सक्षम था। istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
जेसन जैरेट

4
$(npm bin)के लिए एक विहित शॉर्टकट है ./node_modules/.bin/, और बिन फ़ोल्डर में istanbul/lib/cli.jsउपनाम है istanbul। तो यहाँ एक छोटी सी आज्ञा है:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
हेनरी Blyth

19
@ विंडोज उपयोगकर्ता:istanbul cover node_modules/mocha/bin/_mocha -- -R spec
पियर-ल्यूक गेंड्रेउ

150

अब ( 2020 ) istanbul का उपयोग करने का पसंदीदा तरीका इसकी "आर्ट कमांड लाइन इंटरफ़ेस की स्थिति" nyc है

सेट अप

सबसे पहले, इसे अपने प्रोजेक्ट में स्थापित करें

npm i nyc --save-dev

फिर, यदि आपके पास एक npm आधारित परियोजना है, तो अपने mocha परीक्षणों के कोड कवरेज को निष्पादित करने के लिए scriptsअपने पैकेज के ऑब्जेक्ट के अंदर परीक्षण स्क्रिप्ट बदलें।

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

Daud

अब अपने परीक्षण चलाएं

npm test

और आपको अपने परीक्षण के आउटपुट के बाद अपने कंसोल में इस तरह एक तालिका दिखाई देगी:

इस्तांबुल Nyc मोचा कोड कवरेज

अनुकूलन

एचटीएमएल की रिपोर्ट

महज प्रयोग करें

nyc --reporter=html

के बजाय text। अब यह अंदर एक रिपोर्ट का उत्पादन करेगा ./coverage/index.html

रिपोर्ट प्रारूप

इस्तांबुल रिपोर्ट प्रारूपों की एक विस्तृत श्रृंखला का समर्थन करता है। आप के लिए सबसे उपयोगी खोजने के लिए इसकी रिपोर्ट लाइब्रेरी देखें । बस --reporter=REPORTER_NAMEआप चाहते हैं कि प्रत्येक प्रारूप के लिए एक विकल्प जोड़ें । उदाहरण के लिए, साथ

nyc --reporter=html --reporter=text

आपके पास कंसोल और HTML रिपोर्ट दोनों होंगे।

Npm परीक्षण के साथ कवरेज न चलाएं

बस अपने आप में एक और स्क्रिप्ट जोड़ें और केवल अपने टेस्ट रनर के साथ स्क्रिप्ट package.jsonछोड़ें test(जैसे मोचा):

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

अब इस कस्टम स्क्रिप्ट को चलाएँ

npm run test-with-coverage

कोड कवरेज के साथ परीक्षण चलाने के लिए।

कोड कवरेज कम होने पर बल परीक्षण विफल हो जाता है

कुल कोड कवरेज 90% से कम होने पर विफल:

nyc --check-coverage --lines 90 

कम से कम एक फ़ाइल का कोड कवरेज 90% से कम होने पर विफल:

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

2
यह पूरी तरह से चमेली के लिए भी काम करता है: "nyc --reporter = html चमेली"
संदीप सूबेदार

12
"अब (2017)" को जोड़ने के लिए धन्यवाद - वास्तव में इस तेजी से चलती जावास्क्रिप्ट दुनिया में मददगार
kamahl

2
मामले में किसी और को भ्रमित किया गया था - npm रिपॉजिटरी istanbul को लगता है कि nyc द्वारा सुपररेड किया गया है । अपनी सूचीबद्ध निर्भरता के अनुसार, इस्तांबुल विभिन्न संकुल जो सभी अपने में रखा जाता है में अलग विभाजित किया गया था istanbuljs monorepo
aaaaaa

1
मैं --reporter=htmlसक्षम है, लेकिन html फ़ाइल हमेशा खाली है, वहाँ खुला ब्लॉक या% आदि के बारे में कुछ भी नहीं दिखाया गया है सिर्फ मेज के हेडर
TGW

2
तो ... इस्तांबुल नामक एक ढांचा जिसका सीएलआई कमान NYC है? गलत ... मुझे इस पर भरोसा नहीं है!
Tivie

19

ब्लैंकेट.जेएस एकदम सही काम करता है।

npm install --save-dev blanket

आपके परीक्षण / परीक्षणों के सामने। js

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

Daud mocha -R html-cov > coverage.html


आवश्यकता ('कंबल') ({पैटर्न: फ़ंक्शन (फ़ाइल नाम) {वापसी! /node_modules/.test (फ़ाइल नाम);}}};
21

4
2015 तक, कंबल.जेएस को बनाए नहीं रखा गया है और ईएस 6 का समर्थन नहीं करता है। इस्तांबुल अत्यधिक अनुशंसित है।
टेरोई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.