जेस्ट के लिए कोड कवरेज


131

क्या जावास्क्रिप्ट जैस्ट टेस्टिंग फ्रेमवर्क में कोड कवरेज होने का एक तरीका है जो जैस्मीन के ऊपर बनाया गया है?

आंतरिक ढांचा इसे प्राप्त होने वाले कोड कवरेज का प्रिंट आउट नहीं लेता है। मैंने इस्तांबुल , कंबल और JSCover का उपयोग करने की भी कोशिश की है , लेकिन उनमें से कोई भी काम नहीं करता है।


मैं बहुत घबराहट में नहीं हूं, लेकिन क्या आपने config.collectCoverage देखा है ?
सिरो कोस्टा

जवाबों:


123

जेस्ट 21.2.1 का उपयोग करते समय , मैं कमांड लाइन पर कोड कवरेज देख सकता हूं और --coverageजेस्ट स्क्रिप्ट को पास करके एक कवरेज निर्देशिका बना सकता हूं । नीचे कुछ उदाहरण दिए गए हैं:

मैं जेस्ट को स्थानीय रूप से स्थापित करने की प्रवृत्ति रखता हूं, जिस स्थिति में कमांड इस तरह दिख सकती है:

npx jest --coverage

मुझे लगता है (हालांकि पुष्टि नहीं की गई है), कि अगर मैं विश्व स्तर पर जेस्ट स्थापित करता हूं तो यह भी काम करेगा:

jest --coverage

बहुत विरल डॉक्स यहाँ हैं

जब मैंने कवरेज / lcov- रिपोर्ट निर्देशिका में नेविगेट किया तो मुझे एक index.html फ़ाइल मिली जिसे एक ब्राउज़र में लोड किया जा सकता था। इसमें कमांड लाइन पर मुद्रित जानकारी, अतिरिक्त जानकारी और कुछ ग्राफिकल आउटपुट शामिल थे।


7
वैश्विक मॉड्यूल का उपयोग कभी न करें। संस्करण स्थिरता, और पैकेज उपस्थिति सुनिश्चित करने के लिए हमेशा में निष्पादन का उपयोग node_modulesके माध्यम से ./node_modules/.bin/jest --coverage। जब तक पैकेज का नाम पैकेज.जसन में रखा जाता है, तब तक आप जेस्ट के सटीक संस्करण के साथ निष्पादन की गारंटी दे सकते हैं।
तायस्टैक

केवल परिवर्तित फ़ाइलों के लिए जेस्ट कवरेज कैसे प्राप्त करें?
शनिका एदिरीवेरा

क्या परीक्षण को विफल करने का एक आसान तरीका है यदि कवरेज एक निश्चित सीमा से कम है? इसी सवाल का जवाब: stackoverflow.com/questions/60512167/…
स्टीफन


88

अद्यतन: 7/20/2018 - कवरेज के लिए लिंक और अद्यतन नाम जोड़ा गया।

UPDATE: 8/14/2017 - यह उत्तर पूरी तरह से पुराना है। अब जेस्ट डॉक्स को देखें। ऐसा करने के बारे में उनके पास आधिकारिक समर्थन और प्रलेखन है।

@hankhsiao को एक फोर्क्ड रेपो मिला है जहां इस्तांबुल जेस्ट के साथ काम कर रहा है। इसे अपनी देव निर्भरताओं में जोड़ें

 "devDependencies": {
     "jest-cli": "git://github.com/hankhsiao/jest.git"
 }

यह भी सुनिश्चित करें कि आपके पैकेज में कवरेज सक्षम है। json jest प्रविष्टि और आप इच्छित प्रारूप भी निर्दिष्ट कर सकते हैं। (Html ​​बहुत बुरा गधा है)।

 "jest": {
     "collectCoverage": true,
     "coverageReporters": ["json", "html"],
 }

देखें जेस्ट प्रलेखन के लिए coverageReporters (डिफ़ॉल्ट है ["json", "lcov", "text"])

या --coverageजब आप जेस्ट आह्वान करें तो जोड़ें ।


1
कवरेजफ़ॉर्मेट्स विकल्प को हटा दिया गया है - ऐसा लगता है कि हर बार जेनसन और एचटीएमएल दोनों उत्पन्न होते हैं।

1
मैं --coverage विकल्प का उपयोग करता हूं, लेकिन बिल्कुल कुछ अलग नहीं होता है।
gbbr

3
इसे (अभी) कहा जाता है coverageReportersऔर डिफ़ॉल्ट है ["json", "lcov", "text"]। देखें facebook.github.io/jest/docs/...
कर्स्टन एस

काम न करें, अज्ञात विकल्प "कवरेजफ़ॉर्मेट्स" मूल्य के साथ ["json", "html"] मिला।
सर्गमा १२'१

40

जनवरी 2019: जेस्ट संस्करण 23.6

इस प्रश्न को देखने वाले किसी व्यक्ति के लिए हाल ही में विशेष रूप से यदि परीक्षण का उपयोग कर npmया yarnसीधे

वर्तमान में, आपको कॉन्फ़िगरेशन विकल्पों को बदलने की आवश्यकता नहीं है

जेस्ट आधिकारिक वेबसाइट के अनुसार , आप कवरेज रिपोर्ट उत्पन्न करने के लिए निम्न कार्य कर सकते हैं:

1- दोपहर के लिए:

आपको जेस्ट --के --coverageतर्क को पारित करने से पहले रखना चाहिए

npm test -- --coverage

अगर आप --coverageसीधे बिना --इसे लागू करने की कोशिश करेंगे तो यह काम नहीं करेगा

2- यार्न के लिए:

आप --coverageसीधे जेस्ट के तर्क को पारित कर सकते हैं

yarn test --coverage

1
केवल परिवर्तित फ़ाइलों के लिए जेस्ट कवरेज कैसे प्राप्त करें?
शनिका एडिरीवेरा

कब से बदला? आप शायद इसके लिए --watchसेटिंग का उपयोग करना चाहते हैं ।
कोहन

1
यह उत्तर लोगों की स्थिति के बारे में बहुत सारी धारणाएँ बनाता है package.json
airtonix

6

ठीक है, मेरे पिछले उत्तर को नजरअंदाज करें क्योंकि किसी ने मुझे बताया कि इससे समस्या का समाधान नहीं हुआ।

नया उत्तर:

1) नवीनतम jest (v 0.22) की जाँच करें: https://github.com/facebook/jest

2) facebook टीम कवरेज रिपोर्ट के हिस्से के रूप में istanbul डालता है और आप इसे सीधे उपयोग कर सकते हैं।

3) jest को क्रियान्वित करने के बाद, आप कंसोल पर कवरेज रिपोर्ट प्राप्त कर सकते हैं और jest द्वारा निर्धारित रूट फ़ोल्डर के तहत, आपको json और html प्रारूप में कवरेज रिपोर्ट मिल जाएगी।

4) FYI करें, यदि आप npm से इंस्टॉल करते हैं, तो आपको नवीनतम संस्करण नहीं मिल सकता है; इसलिए पहले जीथब को आज़माएं और सुनिश्चित करें कि कवरेज वही है जो आपको चाहिए।


पुराना उत्तर:

के रूप में अच्छी तरह से एक ही समस्या है। संक्षिप्त उत्तर है:Istanbul और Jestएक साथ काम नहीं कर रहे हैं।

अधिक जानकारी के लिए निम्न पृष्ठ देखें:

https://github.com/facebook/jest/issues/101

jest ऐसे संदर्भ का उपयोग करता है जो मूल कोड में V8 संदर्भ में JS स्क्रिप्ट चलाता है और इस प्रकार istanbul की आवश्यकता और vm.runInThisContext हुक के सभी को दरकिनार कर देता है। इसलिए इस्सानबुल कवर मानक हुकेबल नोड से काम नहीं करेगा। जेएस फ़ंक्शन का उपयोग नहीं किया जा रहा है और प्री-इंस्ट्रूमेंटिंग फाइलें या तो मदद नहीं करेंगी क्योंकि प्रत्येक परीक्षण अपने सैंडबॉक्स में चलता है और कोई वैश्विक नहीं है जिसमें कवरेज ऑब्जेक्ट को स्टैश करना है।

@ कैरो कोस्टा: यह config.collectCoverageकाम नहीं कर रहा है, क्योंकि यह एक 'TODO' फ़ंक्शन है। कृपया स्रोत कोड की जाँच करें।


सवाल यह था कि जेस्ट के लिए कोड कवरेज कैसे प्राप्त किया जाए। इस्तांबुल और जेस्ट एक साथ काम नहीं करते हैं यह सच हो सकता है, लेकिन यह सवाल का जवाब नहीं देता है।
डेविड राब

0

यदि आप परेशान हैं - काम नहीं कर रहा है तो यह कवरेज के कारण हो सकता है। बिना 'पाठ' या 'पाठ-सारांश' जोड़े जाने में सक्षम। डॉक्स से: "नोट: इस विकल्प को सेट करना डिफ़ॉल्ट मानों को अधिलेखित करता है। कंसोल आउटपुट में कवरेज सारांश देखने के लिए" टेक्स्ट "या" टेक्स्ट-सारांश "जोड़ें।" स्रोत


0

अपनी package.json फ़ाइल कॉन्फ़िगर करें

"परीक्षण": "जेस्ट -कवरेज",

यहाँ छवि विवरण दर्ज करें

अब चलाएं:

yarn test

सभी परीक्षण चलने लगेंगे और आपको रिपोर्ट मिल जाएगी। यहाँ छवि विवरण दर्ज करें


-1

मेरे पास एक ही मुद्दा था और मैंने इसे नीचे के रूप में तय किया।

  1. यार्न स्थापित करें npm install --save-dev yarn
  2. jest-cli स्थापित करें npm install --save-dev jest-cli
  3. इस पैकेज में जोड़ें। json "jest-coverage": "yarn run jest -- --coverage"

आपके द्वारा परीक्षण लिखने के बाद कमांड npm रन जेस्ट-कवरेज चलाएं। यह रूट डायरेक्टरी में कवरेज फ़ोल्डर बनाएगा। /coverage/icov-report/index.html में कोड कवरेज का HTML दृश्य है।

हैप्पी कोडिंग!


8
यार्न स्थापित करने की कोई आवश्यकता नहीं है। यार्न एनपीएम के लिए सिर्फ अलग पैकेज मैनेजर है
ब्लैक

-10

Chutzpah की कोशिश करो । मैंने अभी इसका उपयोग किया है। और मैंने इसके बारे में Visual Studio में एकीकृत करने के तरीके के बारे में ब्लॉग किया।

इस तरह से मैंने Chutzpah के साथ कोड कवरेज किया: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/


चुतज़पथ ब्लैंकेट के ऊपर बनाया गया है और मैंने ऊपर निर्दिष्ट किया है कि जेस्ट इसके साथ काम नहीं करता है।
एलेक्स पाल्सी

दिलचस्प इसलिए क्योंकि मेरा बस काम था। francorobles.wordpress.com/2014/09/14/…
francorobles

1
आप जेस्ट का उपयोग नहीं कर रहे हैं, जो कि डिफ़ॉल्ट रूप से हर मोक्स द्वारा require
एलेक्स पाल्सी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.