2016-09-03 12 views
5

मैं आदेशमिनिमल कोड इस्तांबुल उपयोग करने के लिए प्रोग्राम के रूप में

istanbul cover node_modules/mocha/bin/_mocha dist/test 

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

+0

मिला [यहां कई विकल्प] (https://github.com/gotwarlost/istanbul/issues/394), लेकिन वे पर्याप्त विस्तृत नहीं हैं। इस्तांबुल के एपीआई के साथ प्रोग्रामेटिक तरीके से यह कैसे किया जाता है, इस संदर्भ में कम से कम इस उपकरण में वास्तव में कैसे काम किया जाता है, इस बारे में अंतर्दृष्टि प्राप्त करना बहुत अच्छा होगा ... – laggingreflex

उत्तर

0

मुझे ऐसा करने का एक तरीका पता चला, लेकिन यह बहुत सुंदर नहीं है। यदि आप eval (मुझे पता है!) वाद्य यंत्र कोड, इस्तांबुल वैश्विक चर __coverage__ पर कवरेज ऑब्जेक्ट लिखता है। यदि आप चाहें तो आप उपकरण के लिए कन्स्ट्रक्टर में ग्लोबल वैरिएबल का नाम भी निर्दिष्ट कर सकते हैं। यहाँ एक कमांड लाइन स्क्रिप्ट है कि यह कैसे किया जा सकता है पता चलता है:

const istanbul = require('istanbul'); 
const instrumenter = new istanbul.Instrumenter(); 
const collector = new istanbul.Collector(); 
const fs = require('fs'); 
const filename = 'file.js'; 

fs.readFile(filename, 'utf-8', (err, data) => { 
    instrumenter.instrument(data, filename, (err, generatedCode) => { 
    eval(generatedCode); 
    console.log(JSON.stringify(global['__coverage__'])); 
    }); 
}); 

फ़ाइल हिस्सा है और console.log सिर्फ एक पूरा डेमो बनाने के लिए कर रहे हैं। आपको वास्तव में instrument और eval की आवश्यकता है। चाहे आप eval का उपयोग करेंगे, यहां आप पर निर्भर है।

+0

ऐसा लगता है कि यह एक फ़ाइल के लिए काम करता है, लेकिन पूरे मोचा परीक्षण के लिए सूट? – felixfbecker

संबंधित मुद्दे