আমি জুঁই.জেএস-এর একটি বৈশিষ্ট্যে কীভাবে ফোকাস করব?


154

আমি বরং একটি বৃহত স্থাপত্য পরিবর্তন থেকে ব্যর্থ চশমা একগুচ্ছ আছে। আমি প্রত্যেককে 'ফোকাস' দিয়ে ট্যাগ করে একে একে একে ঠিক করার কাজ করতে চাই।

জুঁই.জেসের কি এর মতো বৈশিষ্ট্য রয়েছে? আমি কসম খেয়েছিলাম যে আমি এক পর্যায়ে পড়েছি কিন্তু এটি ডক্সে দেখতে পাচ্ছি না।


1
@ ফিল-পিরোজভকোভের সাম্প্রতিক উত্তরটি নির্দেশ করে যে এটি জেসউইনের সাথে v2.1-এ পরিচিত হয়েছিল
অ্যালেক্সান্ডার

উত্তর:


56

আপনি অনুমানটির জন্য ইউআরএল ব্যবহার করে একটি একক স্পেক চালাতে পারেন

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

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

}) 

এখন আপনি এই ইউআরএল http://localhost:8888?spec=MySpecএবং একটি প্রথম পরীক্ষা দিয়ে কেবল পুরো স্পিক চালাতে পারেনhttp://localhost:8888?spec=MySpec+function+1


10
অথবা কেবল ফলাফলের পৃষ্ঠায় চশমা বা পৃথক পরীক্ষাগুলিতে ক্লিক করুন
jackocnr

অসাধারণ. : এখন, কিভাবে আমি এটা এই এক চালানোর জন্য পেতে পারি describe("MySpec", ...)এবং আপনার ডিভাইসে এক না: describe("MySpec blah blah", ...)? মনে হচ্ছে এটি একটি স্ট্রিং ম্যাচ করছে।
ইয়ান ফিলিপস

বর্ণন.অনুষ্ঠই হ'ল সঠিক উত্তর যদি জুঁই ২.০ ব্যবহার করা হয় তবে অন্যান্য সংস্করণ সম্পর্কে নিশ্চিত নন।
ডেভিডজেলসন

http://localhost:8888?spec=function+1খুব কাজ করা উচিত (প্রায়শই মাইস্পেক নির্দিষ্ট করার প্রয়োজন হয় না)
লি পেনকম্যান

123
fdescribe,fit
বাসারত

269

কর্মফল ব্যবহার করার সময় আপনি কেবলমাত্র একটি পরীক্ষা দিয়ে fitবা fdescribe( iitএবং ddescribe২.১ এর আগে জেসমিনে) সক্ষম করতে পারবেন ।


এটি কেবল চালায় 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
আইআই বা ডিডি চশমা না করাতে আপনাকে সতর্ক থাকতে হবে। এরকম কিছু মিস করা সহজ।
রিমিয়ান

@ জামেশফিশারকে প্রশ্নটি ২০১১ সালে জিজ্ঞাসা করা হয়েছিল। এছাড়াও, iitএবং কার্মের ddescribeসংযোজন, জুঁই নয়।
জাস্টাস রোমিজন

আমি একমাত্র এমন কি মনে করি যে মিক্সিং করা xitএবং এর fitমধ্যে itপড়া কঠিন এবং ত্রুটি প্রবণ?
বি সেভেন

119

মূলত ২.১ এর সাথে fitএবং এর সাথে fdescribe


1
আমি যখন 'ফিট' ব্যবহার করি এবং কর্স ব্যবহার করে কনসোলে আমার পরীক্ষাগুলি চালিত করি, তখন আমি অনেক এড়িয়ে যাওয়া পরীক্ষা দেখতে পারি, তবে পরীক্ষার ত্রুটিগুলি দেখতে আমার শীর্ষে স্ক্রোল করা দরকার to আমি যখন 'ফিট' না করে পরীক্ষা চালাই তখন আমার তেমন সমস্যা হয় না, কারণ নীচে আমার ত্রুটির সংক্ষিপ্তসার রয়েছে। আপনি কীভাবে এই সমস্যাটি ঠিক করবেন জানেন?
অত্যাচার্য

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

আপনি কর্মফল / Testacular মাধ্যমে জুঁই ব্যবহার করা ঘটতে যদি আপনি ইতিমধ্যে এক্সেস আছে উচিত ddescribe()এবংiit()


12
ডিসিস্ক্রিপ্ট এবং আইআইটি জন্য +1 ... এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
শেঠ ফুল

এটি সর্বোত্তম ... এছাড়াও নোট করুন যে নতুন বাক্য গঠনটি fdescribeএবং fit- "চ" অর্থ "ফোকাসড"। আরও দেখুন jasmine.github.io/2.1/focused_specs.html
যিহিষ্কেল ভিক্টর

25

এটি করার কয়েকটি উপায় রয়েছে।

রয়েছে: জুঁইয়ের বৈশিষ্ট্য ফোকাসযুক্ত চশমা (২.২): 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 karma:dev watch --grep=mypattern

যদি আপনি গুল্প ব্যবহার করেন (যা আমার পছন্দের টাস্ক রানার), আপনি কর্জের কনফিগারেশন সেট করে ইয়ার্জ এবং ম্যাচ প্যাটার্ন সহ গুলপ - কর্মে অর্গগুলি পাস করতে পারেন ।

এই মত:

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

একা একা জেসমিন (২.০.০) এর সাথে, 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");
        }); 
      });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.