মোচা দিয়ে কীভাবে একক পরীক্ষা চালানো যায়?


291

আমি আমার জাভাস্ক্রিপ্ট স্টাফ পরীক্ষা করতে মোচা ব্যবহার করি। আমার পরীক্ষার ফাইলে 5 টি পরীক্ষা রয়েছে। ফাইলের সমস্ত পরীক্ষার চেয়ে কোনও নির্দিষ্ট পরীক্ষা (বা পরীক্ষার সেট) চালানো কি সম্ভব?

উত্তর:


355

মোচার --grepবিকল্পটি ব্যবহার করে দেখুন :

    -g, --grep <pattern>            only run tests matching <pattern>

আপনি যে কোনও বৈধ জাভাস্ক্রিপ্ট রেজেক্স ব্যবহার করতে পারেন <pattern>। উদাহরণস্বরূপ, যদি আমাদের থাকে test/mytest.js:

it('logs a', function(done) {
  console.log('a');
  done();
});

it('logs b', function(done) {
  console.log('b');
  done();
});

তারপর:

$ mocha -g 'logs a'

একটি একক পরীক্ষা চালাতে। মনে রাখবেন যে সমস্ত describe(name, fn)এবং অনুরোধগুলির নাম জুড়ে এই গ্রেপগুলি it(name, fn)

describe()নির্দিষ্ট সেটগুলি সনাক্ত করা এবং নির্বাচন করা সহজ করার জন্য নেমস্পেসিংয়ের জন্য নেস্টেড কলগুলি বিবেচনা করুন।


1
ধন্যবাদ! আমি এমন ছাপের মধ্যে ছিলাম যে --grepকেবল @ট্যাগগুলি থেকে ফিল্টার হয়েছিল ।
কুমারহর্ষ

5
প্রোগ্রামটিমেটিকভাবে মোচা ব্যবহার করার সময় (গ্রান্টের থেকে উদাহরণস্বরূপ) একটি গ্রেপ্তার রয়েছে: গ্রেপ বিকল্পের একটি ´RegExp () ´ অবজেক্ট হওয়া দরকার। যদি এটি একটি স্ট্রিং হয়, এটি পালাতে হবে।
এইচ-কিপ্পো

1
এটি আমার জন্য কাজ করা একমাত্র সমাধান। কমান্ড লাইনে ফাইলগুলি নির্দিষ্ট করে ( mocha some/test.js) মোটেও কাজ করে না। ধন্যবাদ!
হারাবান

2
স্ট্রিং logs a bcdরয়েছে যা চালানো এড়াতে কোনও উপায় logs a? রিজেক্সএক্স 0.10.2 এ ^$কাজ করছে না।
সিরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

ধন্যবাদ।আমি ডিরেক্টরিটি মোচা-জি 'লগ-এ' হিসাবে উল্লেখ না করলে কিছু ত্রুটি পাই get
কেটি

165

আপনার ব্যবহারের ধরণটির উপর নির্ভর করে আপনি কেবল কেবল ব্যবহার করতে পছন্দ করতে পারেন । আমরা টিডিডি স্টাইল ব্যবহার করি; এটি দেখতে এরকম দেখাচ্ছে:

test.only('Date part of valid Partition Key', function (done) {
    //...
}

সমস্ত ফাইল / স্যুট থেকে কেবল এই পরীক্ষাটি চলবে।


5
বিডিডিও একই কাজ করে। আপনি যখন একক পরীক্ষায় কাজ করছেন তখন এটি দুর্দান্ত। এটি স্যুইট / বর্ণনা স্তরেও ব্যবহার করা যেতে পারে
অ্যান্ডিজিনসার

14
চই সহ এবং সিনট্যাক্সের প্রত্যাশা যা তা হবে it.only
এলকেলেক

4
এই উত্তরটি আরও ভাল কারণ এটি যখন কাজ করবে তখন মোচা অভ্যন্তরীণ কর্ম ইত্যাদি ব্যবহার করা হবে
বিবেক কোদিরা

2
it.onlyএকসাথে কাজ করবে না givenএর একজাতীয় উৎকৃষ্ট কফি-testdata । এবং এটি পরে মুছে ফেলা ভুলে যাওয়া সহজ।
Tr1et

4
eslint-plugin-mochaএকটি নিয়ম রয়েছে no-exclusive-testsযা আপনাকে মুছে ফেলতে ভুলে গেলে আপনাকে ধরবে .only
dostu

84

আপনি যদি npm test(প্যাকেজ.জসন স্ক্রিপ্ট ব্যবহার করে) ব্যবহার করছেন তবে মোচায় পারম --পাস করার জন্য অতিরিক্ত ব্যবহার করুন

যেমন npm test -- --grep "my second test"

সম্পাদনা : দেখে মনে হচ্ছে --grepকিছুটা উদাসীন হতে পারে (সম্ভবত অন্যান্য যুক্তির উপর নির্ভর করে)। আপনি পারেন:

প্যাকেজটি পরিবর্তন করুন

"test:mocha": "mocha --grep \"<DealsList />\" .",

অথবা বিকল্পভাবে ব্যবহার করুন --bailযা কম উদ্বেগজনক বলে মনে হচ্ছে

npm test -- --bail

3
আমার জন্য কাজ করেছেন। ধন্যবাদ :)
জিল-জান ভিয়ে

1
@ অ্যান্ডি --grep কিছুটা উদ্বেগজনক হতে পারে - এনপিএম স্ক্রিপ্ট এন্ট্রির মধ্যে মোচার পরে এটি ঠিক রেখে দেওয়ার চেষ্টা করুন। অন্য npm test -- --bailপ্রথম ব্যর্থ পরীক্ষার পর bailing জন্য দরকারী
অ্যাশলে Coolman

1
--grepআমার দিন বাঁচানোর আগে অতিরিক্ত ড্যাশ পাস ! অনেক ধন্যবাদ. পুনশ্চ. আমি উইন্ডোজ এ চলেছি, চলছেnpm test -- --grep @tag
মাইকোলা

18

ফাইল নাম– একক পরীক্ষা চালান

প্রকৃতপক্ষে, আপনি ফাইলের নাম অনুসারে একটিমাত্র মোচা পরীক্ষাও চালাতে পারেন (কেবল "এটি (দ্বারা নয় - স্ট্রিং-গ্রেপিং") যদি আপনি ./test/**/*.spec.jsনিজের মোচা.অ্যাপ্টস থেকে গ্লোব প্যাটার্নটি (উদাহরণস্বরূপ ) অপসারণ করেন , যথাক্রমে একটি অনুলিপি তৈরি করেন:

node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js

এখানে আমার mocha.single.opts (এটি উল্লিখিত গ্লোব লাইনটি হারিয়ে যাওয়ার চেয়ে আলাদা)

--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive

পটভূমি: আপনি অপ্টস-ফাইল থেকে শুরু করে বিভিন্ন স্যুইচকে ওভাররাইড করতে পারবেন (শুরু করে --) আপনি বিশ্বকে ওভাররাইড করতে পারবেন না । এই লিঙ্কটিরও কিছু ব্যাখ্যা রয়েছে।

ইঙ্গিত: যদি node_modules/.bin/mochaআপনাকে বিভ্রান্ত করে, স্থানীয় প্যাকেজ মোচা ব্যবহার করতে। আপনি mochaযদি এটি বিশ্বব্যাপী ইনস্টল করে থাকেন তবে ঠিক লিখতেও পারেন।


এবং যদি আপনি এর সুবিধাগুলি চান package.json: তবুও: **/*আপনার কাছ থেকে আইশ গ্লোবটি সরিয়ে ফেলুন mocha.opts, সর্ব-পরীক্ষার জন্য এগুলি এখানে sertোকান , একক পরীক্ষার জন্য তাদের ছেড়ে যান:

"test": "mocha ./test/**/*.spec.js",
"test-watch": "mocha -R list -w ./test/**/*.spec.js",
"test-single": "mocha $1",
"test-single-watch": "mocha -R list -w $1",

ব্যবহার:

> npm run test

যথাক্রমে

> npm run test-single -- test/ES6.self-test.spec.js 

(মনে রাখবেন --!)


আমার সেটআপে $ 1 এর দরকার Warning: Could not find any test files matching pattern: $1
পড়েনি

15

কেবল 'বর্ণনা', 'এটি' বা 'প্রসঙ্গের' আগে কেবলমাত্র ব্যবহার করুন। আমি "$ npm রান টেস্ট: ইউনিট" ব্যবহার করে চালাচ্ছি এবং এটি কেবলমাত্র একক দিয়ে কার্যকর করে।

describe.only('get success', function() {
 // ...
});

it.only('should return 1', function() {
  // ...
});

11

হাই হাই সমাধানগুলি আমার পক্ষে কার্যকর হয়নি। একটি একক পরীক্ষা চালানোর অন্য উপায়

mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'

এটি একটি একক ফাইল এবং নির্দিষ্ট নাম দিয়ে একটি পরীক্ষা কেস চালাতে সহায়তা করে।


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


8

আপনি "এটি" কেবল চেষ্টা করতে পারেন

 it.only('Test one ', () => {

            expect(x).to.equal(y);
        });
it('Test two ', () => {

            expect(x).to.equal(y);
        });

এর মধ্যে প্রথমটি শুধুমাত্র কার্যকর করবে


2
বিপজ্জনক যদি --forbid-onlyসিআই / বিল্ড সার্ভারের মাধ্যমে পরীক্ষাগুলি কার্যকর না করা হয় । .onlyমূল শাখায় ডুবে যাওয়ার এবং অন্যান্য পরীক্ষাগুলি নিঃশব্দ করার প্রবণতা রয়েছে যেহেতু তারা আর কার্যকর করবে না। আমি বিভিন্ন টেস্টগুলিকে একটি বিরোধী বৈশিষ্ট্য চালানোর জন্য কোড পরিবর্তন করার কার্যপ্রবাহের কথা ভাবতে এসেছি। পরীক্ষক রানার নির্ধারণ করা উচিত যে কোন পরীক্ষাগুলি কার্যকর করা উচিত (ওরফে ট্যাগযুক্ত পরীক্ষা) বিকাশকারী নয়।
k0pernikus

আমি এটি আমার স্থানীয় ক্ষেত্রে একটি কার্যকারিতা পরীক্ষা করার জন্য ব্যবহার করেছি, দ্রষ্টব্য: it.onlyরেপো সহ কোড কমিট করবেন না
বিকাশ এম

5

Https://mochajs.org/#usage এ সন্ধান করা আমরা দেখতে পাই যে এটি সহজভাবে ব্যবহার

মোচা পরীক্ষা / মাইফাইল

কাজ করবে. আপনি শেষে '.js' বাদ দিতে পারেন।


0

এনপিএম পরীক্ষার সময় গ্রেপ পদ্ধতিটি কেন আমার পক্ষে কাজ করছে না তা নিশ্চিত নয়। এটি যদিও কাজ করে। আমার কিছু কারণে টেস্ট ফোল্ডারও নির্দিষ্ট করা দরকার।

এনপিএম পরীক্ষা - পরীক্ষা / sometest.js


0

আপনার সমস্ত পরীক্ষাগুলি একটি টেস্ট.জেএস ফাইল এবং আপনার প্যাকেজ জসনকে স্ক্রিপ্টগুলি যুক্ত করে একত্রিত করুন:

  "scripts": {
  "api:test": "node_modules/.bin/mocha --timeout 10000 --recursive api_test/"
},

আপনার পরীক্ষা ডিরেক্টরিতে কমান্ড টাইপ করুন:

npm run api:test
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.