कर्म: कमांड लाइन से एक एकल परीक्षण फ़ाइल चलाना


93

तो, मैं इसके लिए सब कुछ देख रहा हूं, यहां "समान" उत्तर मिले, लेकिन वास्तव में मैं जो चाहता हूं वह नहीं मिला।

अभी मैं कर्म के साथ एक एकल फाइल का परीक्षण करना चाहते हैं, मैं क्या करने की जरूरत fit(), fdescribe()सवाल में फ़ाइल पर ...

हालाँकि, मैं जो चाहता हूं वह है कि केवल कर्म को कॉल करने में सक्षम होना चाहिए, कॉन्फिगर फ़ाइल के साथ, और इसे एक विशिष्ट फ़ाइल पर निर्देशित करें, इसलिए मुझे फ़ाइल को संशोधित करने की आवश्यकता नहीं है, अर्थात:

karma run --conf karma.conf.js --file /path/to/specific/test_file.js

क्या इसे करना संभव है? या किसी सहायक के साथ? (grunt या gulp का उपयोग करके?)


1
कोशिश की karma run -- --grep=testDescriptionFilter? मैंने इसे पहले सुझाया है, लेकिन मैं पहले हाथ को सत्यापित नहीं कर सकता कि यह काम करता है। (अगर मैं घर पर था, तो मैं सुझाव देने से पहले कोशिश करूंगा। चूंकि मैं कोशिश नहीं कर सकता- मैं जवाब देने के बजाय टिप्पणी कर रहा हूं।) :)
bvaughn

1
यह सिर्फ एक विशिष्ट के लिए नहीं है it? फ़ाइल के लिए इसका उपयोग करने की कोई संभावना नहीं है?
गोंकेलो विएरा

3
ईमानदार होने के लिए, मैंने हमेशा केवल कर्म संशोधित किए हैं। यदि मैं एक परीक्षण फ़ाइल पर ध्यान केंद्रित करना चाहता हूं। यह करना काफी आसान है कि मैंने कभी भी तेजी से रास्ता खोजने के प्रयास में खर्च नहीं किया है।
बावन

1
हॉट - डॉग। खुशी है कि यह मदद की। की तैनाती। :)
बावन

जवाबों:


59

सबसे पहले आपको कर्म सर्वर शुरू करना होगा

karma start

फिर, आप विशिष्ट परीक्षण को फ़िल्टर करने या ब्लॉक का वर्णन करने के लिए grep का उपयोग कर सकते हैं:

karma run -- --grep=testDescriptionFilter

12
इस उत्तर को यह कहना चाहिए कि karmaदौड़ने से karma startपहले आपके पास दौड़ना चाहिएkarma run
etagwerker

4
मुझे नहीं लगता कि यह आवश्यक है, यह देखते हुए कि प्रश्न को कैसे फ़िल्टर किया जाए, के बारे में पूछा गया था karma run। बहुत स्पष्ट है कि पोस्टर को पता था कि कर्म कैसे शुरू करें और सभी परीक्षण चलाएं और सिर्फ छानने के बारे में वाक्यविन्यास की तलाश कर रहे थे।
बावन जूल

2
अगर मैं चाहता हूं कि यह प्रोग्रामिक रूप से हो तो मैं क्या कर सकता हूं? यानी मैं उस फ़ाइल का विवरण नहीं जानता था जो बदल गई थी, लेकिन मुझे इसका फ़ाइल नाम पता होगा।
एमपीवी

3
यह समाधान जैस्मिन परीक्षणों (कर्म-चमेली) के साथ बिल्कुल भी काम नहीं करता प्रतीत होता है। और कर्म रन --help कमांड ऑप्शन के रूप में --grep नहीं दिखाता है। मैं कर्मा का नवीनतम उपयोग कर रहा हूं (यह 1.5.0 कहता है)।
यविन ५

10
यह एक भी परीक्षण नहीं चलाता है!
ईवी

16

भले ही --filesअब समर्थित नहीं है, आप फ़ाइलों की सूची प्रदान करने के लिए एक एनवी चर का उपयोग कर सकते हैं:

// karma.conf.js
function getSpecs(specList) {
  if (specList) {
    return specList.split(',')
  } else {
    return ['**/*_spec.js'] // whatever your default glob is
  }
}

module.exports = function(config) {
  config.set({
    //...
    files: ['app.js'].concat(getSpecs(process.env.KARMA_SPECS))
  });
});

फिर CLI में:

$ env KARMA_SPECS="spec1.js,spec2.js" karma start karma.conf.js --single-run

1
यह महान काम करता है! बस यह सुनिश्चित करें कि आपके डिफ़ॉल्ट ग्लोब के सामने एक निर्देशिका नाम है, या फिर आपको एक पैटर्न त्रुटि मिलती है। इसके अलावा, मैंने अपनी फ़ाइलों को बदल दिया: इस तरह की परिभाषा: फाइलें: [] .concat (getSpecs (process.env.KARMA_SPECS)), और वह बेहतर काम करना समाप्त कर दिया, क्योंकि फ़ंक्शन पहले से ही ग्लोब में रखता है अगर कोई पर्यावरण चर नहीं है सेट। ओह, और मुझे नहीं लगता कि आपको कमांड के सामने "env" की आवश्यकता है (यह मेरे लिए बिना काम करता है)। इस समाधान के लिए धन्यवाद @ युरि खार्चेंको!
यवन ५

6

यह विकल्प कर्म के हाल के संस्करणों में समर्थित नहीं है:

देख https://github.com/karma-runner/karma/issues/1731#issuecomment-174227054

सीएलआई का उपयोग करके फाइल एरे को नए सिरे से परिभाषित किया जा सकता है:

karma start --files=Array("test/Spec/services/myServiceSpec.js")

या बच गया:

karma start --files=Array\(\"test/Spec/services/myServiceSpec.js\"\)

संदर्भ


2
मुझे यह त्रुटि देता है - बैश: अप्रत्याशित टोकन के पास सिंटैक्स त्रुटि `('
Lakshay

5
इसलिए, जब मैं यह कोशिश करता हूं तो मुझे निम्नलिखित त्रुटि मिलती है: config.files = config.files.map(createPatternObject).map(createPatternMapper(basePathResolve))जो कि इस तथ्य के कारण हो सकता है कि मैं आवश्यकता के अनुसार उपयोग कर रहा हूं?
गोंकेलो विएरा

1
erm, आवश्यकता के कारण नहीं है, क्योंकि जेसी एरे होने के नाते कुछ अजीब कारण से कर्म Array ("zzz") नहीं पढ़ रहा है? O_o
गोंकेलो विएरा

2
एनएम, ऐसा लगता है कि कर्म अब - afiles arg का समर्थन नहीं करता है?
गोंकेलो विएरा

23
यहां आने वाले सभी लोगों के लिए चेतावनी अब कर्म में समर्थित नहीं है: github.com/karma-runner/karma/issues/…
dignifiedquire
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.