7

पैटर्न का उपयोग कर कर्म जैस्मीन में चुनिंदा परीक्षण निष्पादन मुझे कर्म-जैस्मीन पर कमांड लाइन विकल्प का आह्वान करने में समस्या हो रही है जो केवल उन परीक्षणों को निष्पादित करने की अनुमति देता है जो किसी दिए गए पैटर्न से मेल खाते हैं।पैटर्न मिलान

/path/to/एकल परीक्षा/main.spec.js

describe('my first test suite', function() { 
    it('always passes', function() { 
    expect(true).toBe(true); 
    }); 

    it('still always passes', function() { 
    expect(true).toBe(true); 
    }); 
}); 

मैं वर्णन (उदाहरण के लिए "अभी भी हमेशा से गुजरता है") है यह सोचते हैं रहा हूँ: मेरी कल्पना के रूप में पढ़ता आइटम जिसके खिलाफ grep कमांड लाइन विकल्प द्वारा निर्दिष्ट पैटर्न मिलान किया गया है। जब मैं तथ्य यह है कि इसके विवरण केवल उदाहरण शब्द "अभी भी" युक्त के आधार पर दूसरे उदाहरण चलाने के लिए प्रयास करते हैं, दोनों उदाहरण सिर्फ एक के बजाय क्रियान्वित कर रहे हैं:

$ karma start -- --grep=still 
INFO [karma]: Karma v0.12.35 server started at http://localhost:9876/ 
INFO [launcher]: Starting browser PhantomJS 
INFO [PhantomJS 1.9.8 (Linux 0.0.0)]: Connected on socket 7Dn7Ez1Reap7ch0Uzsb0 with id 44623726 
PhantomJS 1.9.8 (Linux 0.0.0): Executed 2 of 2 SUCCESS (0.002 secs/0.001 secs) 

मैं सिर्फ इस एक कैसे अमल करते उदाहरण के आधार पर उदाहरण? official documentation पैटर्न मिलान विकल्प के उपयोग का नमूना नहीं देता है।

मैंने discussion of a pull request में पढ़ा है, कि grep विकल्प का उपयोग "फिट" और "fdescribe" के संयोजन के साथ किया जा सकता है। यह परीक्षण करते समय काम करता है। हालांकि, "फिट" के साथ grep का उपयोग करने के मामले में, grep विकल्प के पैटर्न पैटर्न का उद्देश्य क्या है? (यह स्रोत कोड बढ़ाने के लिए आवश्यकता के बिना चुनिंदा परीक्षण निष्पादित करने के लिए सक्षम होने के लिए अच्छा होगा!)

यहाँ संदर्भ के लिए अपने प्रोजेक्ट में फाइल के शेष है:

/path/to/एकल परीक्षण/karma.conf.js

module.exports = function(config) { 
    config.set({ 
    basePath: '', 
    frameworks: ['jasmine'], 
    files: ['*.spec.js'], 
    exclude: [], 
    preprocessors: {}, 
    reporters: ['progress'], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: false, 
    browsers: ['PhantomJS'], 
    singleRun: true 
    }); 
}; 

/path/to/एकल परीक्षा/package.json

{ 
    "name": "single-test", 
    "version": "1.0.0", 
    "description": "", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "MIT", 
    "devDependencies": { 
    "jasmine-core": "^2.3.4", 
    "karma": "^0.12.35", 
    "karma-jasmine": "^0.3.5", 
    "karma-phantomjs-launcher": "^0.2.0", 
    "phantomjs": "^1.9.17" 
    } 
} 
+0

संबंधित: ([fdescribe', 'fit' का उपयोग'] http://stackoverflow.com/a/23793631 /) 'वर्णन' के बजाय, 'it' –

उत्तर

5

आपको कर्म सर्वर शुरू करना है, फिर कर्म धावक में --grep विकल्प निर्दिष्ट करें। अर्थात। की तर्ज पर कुछ:

karma start path/to/karma.conf.js 
फिर एक और टर्मिनल में

:

karma run path/to/karma.conf.js -- --grep=still 

यह आप कॉन्फ़िगरेशन विकल्प में singleRun: false सेट है कि महत्वपूर्ण है।

+0

अतिरिक्त नोट: जब आप ऊपर दिए गए आदेश चलाते हैं, तो दूसरा टर्मिनल कमांड केवल एक बार चलाएगा और बाहर निकल जाएगा, और पहली टर्मिनल विंडो परिवर्तनों के लिए देख रहेगी और केवल फ़िल्टर किए गए सबसेट को चलाना जारी रखेगी परीक्षण। –

+1

यदि आप किसी विशेष क्रम में एकाधिक टैग grep करना चाहते हैं, तो आप [इस उत्तर] से विधि का उपयोग कर सकते हैं (https://stackoverflow.com/questions/469913/regular-expressions-is-there-an-and-operator# उत्तर-470602), उदाहरण के लिए टैग '# टैग 1' और' # टैग 2' के लिए: '--grep = '(? =। * # टैग 1) (? =। * # टैग 2)''। – Will

0

karma-jasmine-spec-tags प्लगइन है जो उनके नामों में टैग द्वारा चल रहे परीक्षणों को फ़िल्टर करने में मदद करता है।

उदाहरण उपयोग:

$ karma start --tags smoke 
$ karma start --skip-tags slow,bench 
$ karma start --tags bench --skip-tags slow 
$ karma start --tag-prefix 'scope:' --tags critical 

जहां एक कल्पना पीछा कर रहा है:

describe('Example test',() => { 
    it('should be a #smoke test',() => { 
     // ... 
    }); 

    it('#slow test',() => { 
     // ... 
    }); 
}) 

describe('Performance test suite #bench',() => { 
    it('#fast #smoke test',() => { 
     // ... 
    }); 

    it('#slow test',() => { 
     // ... 
    }); 
}) 

describe('Custom tag prefix',() => { 
    it('test scope:critical',() => { 
     // ... 
    }); 
}) 
संबंधित मुद्दे