मैं चमेली में एक कल्पना पर कैसे ध्यान केंद्रित करता हूं।


154

मेरे पास एक बड़े वास्तु परिवर्तन से विफल चश्मे का एक गुच्छा है। मैं एक-एक को 'फोकस' के साथ टैग करके उन्हें ठीक करने पर काम करना चाहता हूं।

क्या चमेली.जे में इस तरह की कोई विशेषता है? मैंने शपथ ली कि मैं एक बिंदु पर पढ़ता हूं जो यह करता है लेकिन मैं इसे डॉक्स में नहीं देखता हूं।


1
@ फिल-पिरोजोवकोव के हालिया उत्तर बताते हैं कि यह जसविन को v2.1 में पेश किया गया था
अलक्संड्र

जवाबों:


56

आप युक्ति के लिए url का उपयोग करके एक एकल युक्ति चला सकते हैं

describe("MySpec", function() { 
  it('function 1', function() { 
    //... 
  }) 

  it('function 2', function() { 
    //... 
  } 

}) 

अब आप इस url http://localhost:8888?spec=MySpecऔर पहले परीक्षण के साथ सिर्फ पूरी युक्ति चला सकते हैंhttp://localhost:8888?spec=MySpec+function+1


10
या सिर्फ परिणाम पृष्ठ पर चश्मा या व्यक्तिगत परीक्षणों पर क्लिक करें
जैकॉन्नर

बहुत बढ़िया। अब, मुझे इसे चलाने के लिए कैसे प्राप्त होगा: describe("MySpec", ...)और यह एक नहीं describe("MySpec blah blah", ...):? ऐसा लगता है कि यह एक मैचिंग मैच है।
इयान फिलिप्स 21

वर्णन। केवल चमेली 2.0 का उपयोग करते हुए सही उत्तर है, अन्य संस्करणों के बारे में निश्चित नहीं है।
davidjnelson 21

http://localhost:8888?spec=function+1काम भी करना चाहिए (अक्सर MySpec को निर्दिष्ट करने की आवश्यकता नहीं होती है)
lee penkman

123
fdescribe,fit
बारात

269

कर्मा का उपयोग कर, आप के साथ केवल एक परीक्षण सक्षम कर सकते हैं fitया fdescribe( iitऔर ddescribeजैस्मीन में 2.1 से पहले)।


यह केवल चलता है Spec1:

// or "ddescribe" in Jasmine prior 2.1
fdescribe('Spec1', function () {
    it('should do something', function () {
        // ...
    });
});

describe('Spec2', function () {
    it('should do something', function () {
        // ...
    });
});

यह केवल चलता है testA:

describe('Spec1', function () {

    // or "iit" in Jasmine prior 2.1
    fit('testA', function () {
        // ...
    });

    it('testB', function () {
        // ...
    });

});

7
इसकी एक अच्छी टिप है, लेकिन वर्तमान में यह चमेली में नहीं है। यह कर्म जैसे परीक्षण धावकों द्वारा अनुमति है। अधिक जानकारी के लिए यहां पढ़ें: github.com/pivotal/jasmine/pull/309
p1100i

77
जैस्मीन 2.1 इस रूप में पेश करती है fdescribeऔर fit: github.com/jasmine/jasmine/commit/…
alxndr

10
आपको सावधान रहना होगा कि आप ii या dd चश्मा न लगाएं। कुछ ऐसा ही याद करना आसान है।
रिमीयन

@jameshfisher सवाल 2011 में पूछा गया था। इसके अलावा, iitऔर ddescribeकर्म के अतिरिक्त हैं, न कि जैस्मीन।
जस्टस रोमीजन

मैं केवल एक है कि सोचता है कि मिश्रण हूँ xitऔर fitमें itपढ़ सकते हैं और प्रवण त्रुटि के लिए कड़ी मेहनत कर रहे हैं?
बी सेवन

119

2.1 के साथ कोर मेंfit और fdescribe


1
जब मैं 'फिट' का उपयोग करता हूं और कर्म का उपयोग करके कंसोल में अपने परीक्षण चलाता हूं, तो मैं बहुत सारे स्किप किए गए परीक्षण देख सकता हूं, लेकिन परीक्षण त्रुटियों को देखने के लिए मुझे शीर्ष पर स्क्रॉल करने की आवश्यकता है। जब मैं 'फिट' के बिना परीक्षण चलाता हूं तो मुझे ऐसी कोई समस्या नहीं होती है, क्योंकि मेरे पास सबसे नीचे त्रुटियां हैं। क्या आप जानते हैं कि इस मुद्दे को कैसे ठीक किया जाए?
tytyryty

25

इस पर ठोकर खाने वाले किसी भी व्यक्ति के लिए, एक बेहतर दृष्टिकोण, जिसे आप स्वयं कोड से सेट कर सकते हैं, इस प्लगइन का उपयोग करना है: https://github.com/davemo/jasmine-only

यह आपको इस तरह से कोड पर सटीक विशिष्टता निर्धारित करने की अनुमति देता है:

describe.only("MySpec", function() { 
  it('function 1', function() { 
    //... 
  }) 

  it.only('function 2', function() { 
    //... 
  }
})
// This won't be run if there are specs using describe.only/ddescribe or it.only/iit
describe("Spec 2", function(){}) 

इसे जैस्मिन कोर में शामिल करने के लिए एक लंबी चर्चा हुई है, देखें: https://github.com/pivotal/jasmine/pull/309

यदि आप कर्मा / टेस्टिश के माध्यम से जैस्मीन का उपयोग कर रहे हैं, तो आपके पास पहले से ही ddescribe()और तक पहुंच होनी चाहिएiit()


12
Ddescribe और iit के लिए +1 ... यह स्वीकृत उत्तर होना चाहिए।
सेठ फूल

यह सबसे अच्छा है ... यह भी ध्यान दें कि नया वाक्यविन्यास है fdescribeऔर fit- "f" का अर्थ "केंद्रित" है। Jasmine.github.io/2.1/focused_specs.html
ईजेकील विक्टर

25

कुछ तरीके हैं जिनसे आप इसे कर सकते हैं।

वहाँ है: जैस्मीन की विशेषता फोकस्ड स्पेक्स (2.2): http://jasmine.github.io/2.2/focused_specs.html

ऐनक ध्यान केंद्रित करने से ऐसा हो जाएगा कि वे केवल ऐनक हैं जो चलते हैं। फिट के साथ घोषित किसी भी कल्पना केंद्रित है।

describe("Focused specs", function() {
  fit("is focused and will run", function() {
    expect(true).toBeTruthy();
  });

  it('is not focused and will not run', function(){
    expect(true).toBeFalsy();
  });
});

हालाँकि, मुझे वास्तव में उन्हें चुनने के लिए अपने परीक्षणों (फिट और फ़ेसडाउन) को संपादित करने का विचार पसंद नहीं है। मैं कर्म जैसे एक परीक्षण धावक का उपयोग करना पसंद करता हूं जो एक नियमित अभिव्यक्ति का उपयोग करके परीक्षणों को फ़िल्टर कर सकता है।

यहाँ एक उदाहरण का उपयोग कर रहा है grunt

$ grunt karma:dev watch --grep=mypattern

यदि आप gulp (जो मेरा पसंदीदा कार्य धावक है) का उपयोग कर रहे हैं , तो आप kar's config सेट करके यार्ग और मिलान पैटर्न के साथ gulp- karm में args पास कर सकते हैं ।

Kinda इस तरह:

var Args = function(yargs) {
  var _match = yargs.m || yargs.match;
  var _file = yargs.f || yargs.file;
  return {
    match: function() { if (_match) { return {args: ['--grep', _match]} } }
  };
}(args.argv);


var Tasks = function() {
  var test = function() {
    return gulp.src(Files.testFiles)
      .pipe(karma({ configFile: 'karma.conf.js', client: Args.match()}))
      .on('error', function(err) { throw err; });
  };

  return {
    test: function() { return test() }
  }
}(Args);

gulp.task('default', ['build'], Tasks.test);

मेरा जिस्म देखें: https://gist.github.com/rimian/0f9b88266a0f63696f21

इसलिए अब, मैं विवरण का उपयोग करके एक ही युक्ति चला सकता हूं:

मेरा स्थानीय परीक्षण रन: (14 में से 1 छोड़ दिया गया (13 को छोड़ दिया गया))

gulp -m 'triggers the event when the API returns success'
[20:59:14] Using gulpfile ~/gulpfile.js
[20:59:14] Starting 'clean'...
[20:59:14] Finished 'clean' after 2.25 ms
[20:59:14] Starting 'build'...
[20:59:14] Finished 'build' after 17 ms
[20:59:14] Starting 'default'...
[20:59:14] Starting Karma server...
INFO [karma]: Karma v0.12.31 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
WARN [watcher]: All files matched by "/spec/karma.conf.js" were excluded.
INFO [Chrome 42.0.2311 (Mac OS X 10.10.3)]: Connected on socket hivjQFvQbPdNT5Hje2x2 with id 44705181
Chrome 42.0.2311 (Mac OS X 10.10.3): Executed 1 of 14 (skipped 13) SUCCESS (0.012 secs / 0.009 secs)
[20:59:16] Finished 'default' after 2.08 s

इसे भी देखें: https://github.com/karma-runner/karma-jasmine


मुझे चुनिंदा रूप से परीक्षण चलाने के लिए ग्रंट का उपयोग करने का आपका विचार पसंद है, लेकिन मैं चाहता हूं कि गल्प और कर्म विन्यास अधिक लचीला, विस्तार करने में आसान और उस मामले के लिए समझने में आसान हो।
नोकर

8

आप सामने अपने सभी अपने चश्मा बनाने लेकिन उनके साथ निष्क्रिय कर सकते हैं xdescribeऔर xitआप होते हैं, तो परीक्षण के लिए तैयार है जब तक।

describe('BuckRogers', function () {
  it('shoots aliens', function () {
    // this will be tested
  });

  xit('rescues women', function () {
    // this won't
  });
});

// this whole function will be ignored
xdescribe('Alien', function () {
  it('dies when shot', function () {
  });
});

1

स्टैंड-अलोन जैस्मीन (2.0.0) के साथ, spec_runner.htlm पर, मैं एक विशिष्ट कल्पना पर क्लिक कर सकता हूं और उस एक कल्पना पर ध्यान केंद्रित कर सकता हूं। मुझे इस फीचर पर पहले गौर करना चाहिए था।


1

ठीक उसी तरह से नहीं, जैसा आपने पूछा है, लेकिन iitकेवल उस विशेष युक्ति का परीक्षण करेंगे और फ़ाइल में अन्य सभी को अनदेखा करेंगे, ddescribeउसी तरह से काम करेगा। तो आप एक विशेष कल्पना का उपयोग कर iitया पर ध्यान केंद्रित कर सकते हैंddescribe


1

यह एक व्यावहारिक उदाहरण के साथ सबसे सरल उत्तर है। कुछ में आप इसका उपयोग करके कुछ ब्लॉक चला सकते हैं। च का मतलब है फोकस।

इसके अलावा एक भी नहीं fdescribe ब्लॉक जो केवल वर्णन है, आप उन्हें फिट के रूप में चिह्नित करके केवल विशिष्ट इसे ब्लॉक का चयन कर सकते हैं।

कृपया नीचे दिए गए कोड को चलाएं और कंसोल लॉग का निरीक्षण करें, कोड में टिप्पणियों को भी पढ़ें। इस लेखक के लेख को पढ़ें यह भी मदद करता है। https://davidtang.io/2016/01/03/controlling-which-tests-run-in-jasmine.html

 //If you want to run few describe only add f so using focus those describe blocks and it's it block get run

  fdescribe("focus description i get run with all my it blocks ", function() {
    it("1 it in fdescribe get executed", function() {
        console.log("1 it in fdescribe get executed unless no fit within describe");

    });
    it("2 it in fdescribe get executed", function() {
        console.log("2 it in fdescribe get executed unless no fit within describe");

    });
    //but if you and fit in fdescribe block only the fit blocks get executed
    fit("3  only fit blocks in  fdescribe get executed", function() {
        console.log("If there is  a fit   in fdescribe only fit blocks  get executed");

    });
  });

  describe("none description i get skipped with all my it blocks ", function() {
        it("1 it in none describe get skipped", function() {
            console.log("1 it in none describe get skipped");

        });
        it("2 it in none describe get skipped", function() {
            console.log("2 it in none describe get skipped");
        });
//What happen if we had fit in a none fdescribe block will it get run ?   yes  
       fit("3 fit in none describe get executed too eventhough it;s just describe ", function() {
            console.log("3 fit in none describe get executed too");
        }); 
      });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.