মোচার সাথে কোড কভারেজ


288

আমি আমার নোডজেএস অ্যাপ্লিকেশন পরীক্ষার জন্য মোচা ব্যবহার করছি। এর কোড কভারেজ বৈশিষ্ট্যটি কীভাবে ব্যবহার করতে হয় তা আমি বুঝতে সক্ষম নই। আমি এটি গুগল করার চেষ্টা করেছি কিন্তু কোনও সঠিক টিউটোরিয়াল পাইনি। সাহায্য করুন.

উত্তর:


410

আপনি কোড কভারেজ জন্য একটি অতিরিক্ত গ্রন্থাগার প্রয়োজন, আর কত শক্তিশালী এবং সহজ দ্বারা দূরে প্রস্ফুটিত হবে যাচ্ছি ইস্তানবুল হয়। আপনার মোচা পরীক্ষাগুলি পাস করার পরে নিম্নলিখিতটি চেষ্টা করুন:

npm install nyc

এখন, আপনার বিদ্যমান টেস্ট কমান্ডের সামনে কমান্ডটি এনআইসি রাখুন:

{
  "scripts": {
    "test": "nyc mocha"
  }
}

30
এবং আপনি যদি স্থানীয়ভাবে ইনস্টল করা সংস্করণের সংস্করণটি চালাচ্ছেন তবে চেষ্টা করুন istanbul cover node_modules/mocha/bin/_mocha
এরিক ম্যাকার্থি

102
অথবা, স্থানীয়ভাবে ইস্তানবুল এবং মোচা উভয়ই ইনস্টল করুন, এবং আপনার প্যাকেজ.জসনের স্ক্রিপ্ট বিভাগে নিম্নলিখিতগুলি যুক্ত করুন এবং তারপরে কেবল এনএমপি রান কভারেজ: "কভারেজ": "। / নোড_মডিউলগুলি / পাকিস্তানবুল / লিবি / ক্লি.জেএস কভার। / নোড_মডিউলস / মোচা / বিন / _মোচা - --উই বিডিডি -আর স্পেস -t 5000
ড্যান কোহন

6
উইন্ডোতে চালানোর জন্য এই আদেশটি পেতে আমার সমস্যা হয়েছিল, তবে মোচা বিনের পুরো পথটি নির্দিষ্ট করে আমি এটি কাজে লাগাতে সক্ষম হয়েছি। istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
জেসন জেরেট

4
$(npm bin)এটি একটি প্রমিত শর্টকাট ./node_modules/.bin/, এবং বিন ফোল্ডারে istanbul/lib/cli.jsএ্যালাইজড istanbul। সুতরাং এখানে একটি সংক্ষিপ্ত কমান্ড দেওয়া হয়েছে:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
হেনরি ব্লাইথ

19
@ উইন্ডোজ ব্যবহারকারীরা:istanbul cover node_modules/mocha/bin/_mocha -- -R spec
পিয়র-লুক জেন্ড্রিউ

150

এখন ( ২০২০ ) ইস্তানবুল ব্যবহারের পছন্দের উপায়টি হল তার "স্টেট অফ দ্য আর্ট কমান্ড লাইন ইন্টারফেস" এনআইসি এর মাধ্যমে

সেটআপ

প্রথমে এটি আপনার প্রকল্পে ইনস্টল করুন

npm i nyc --save-dev

তারপরে, যদি আপনার এনপিএম ভিত্তিক প্রকল্প থাকে তবে আপনার মোচা পরীক্ষাগুলির কোড কভারেজ কার্যকর করতে কেবল scriptsআপনার প্যাকেজ.জসন ফাইলের অবজেক্টের ভিতরে পরীক্ষা স্ক্রিপ্টটি পরিবর্তন করুন :

{
  "scripts": {
    "test": "nyc --reporter=text mocha"
  }
}

চালান

এখন আপনার পরীক্ষা চালান

npm test

এবং আপনি আপনার কনসোলটিতে এর মতো একটি টেবিল দেখতে পাবেন, কেবলমাত্র আপনার পরীক্ষার ফলাফলের পরে:

ইস্তাম্বুল নাইক মোচা কোড কভারেজ

কাস্টমাইজেশন

এইচটিএমএল রিপোর্ট

শুধু ব্যবহার

nyc --reporter=html

পরিবর্তে text। এখন এটি ভিতরে একটি প্রতিবেদন উত্পাদন করবে ./coverage/index.html

ফর্ম্যাট রিপোর্ট করুন

ইস্তাম্বুল বিভিন্ন ধরণের রিপোর্ট ফর্ম্যাটকে সমর্থন করে। আপনার জন্য সর্বাধিক দরকারী সন্ধান করার জন্য কেবলমাত্র এর রিপোর্টাগুলি দেখুন --reporter=REPORTER_NAMEআপনি যে প্রতিটি ফর্ম্যাট চান তার জন্য কেবল একটি বিকল্প যুক্ত করুন । উদাহরণস্বরূপ, সাথে

nyc --reporter=html --reporter=text

আপনার কনসোল এবং এইচটিএমএল প্রতিবেদন উভয়ই থাকবে।

এনপিএম পরীক্ষার মাধ্যমে কভারেজ চালাবেন না

কেবলমাত্র আপনার মধ্যে অন্য স্ক্রিপ্ট যুক্ত করুন package.jsonএবং testস্ক্রিপ্টটি কেবলমাত্র আপনার পরীক্ষা চালক (যেমন মোচা) দিয়ে রেখে দিন:

{
  "scripts": {
    "test": "mocha",
    "test-with-coverage": "nyc --reporter=text mocha"
  }
}

এখন এই কাস্টম স্ক্রিপ্টটি চালান

npm run test-with-coverage

কোড কভারেজ সহ পরীক্ষা চালাতে।

কোড কভারেজ কম থাকলে জোর পরীক্ষা ব্যর্থ

মোট কোডের কভারেজ 90% এর নিচে থাকলে ব্যর্থ:

nyc --check-coverage --lines 90 

কমপক্ষে একটি ফাইলের কোড কভারেজ 90% এর নীচে থাকলে ব্যর্থ:

nyc --check-coverage --lines 90 --per-file

2
এটি জুঁইয়ের জন্যও পুরোপুরি কাজ করে: "এনআইসি --reporter = এইচটিএমএল জুঁই"
সন্দীপ সুবেদী

12
"এখন (2017)" যোগ করার জন্য ধন্যবাদ - এই দ্রুত চলমান জাভাস্ক্রিপ্ট বিশ্বে সত্যই সহায়ক
কামাহল

2
যদি অন্য কেউ বিভ্রান্ত ছিল - npm সংগ্রহস্থলের ইস্তানবুল দ্বারা সংযোজন হয়েছে মনে হচ্ছে এনওয়াইসি । তার তালিকাভুক্ত নির্ভরতা প্রতি, ইস্তানবুল বিভিন্ন প্যাকেজ যা সব তাদের মধ্যে বজায় রাখা হয় মধ্যে পৃথক্ বিভক্ত ছিল istanbuljs monorepo
aaaaaa

1
আমি --reporter=htmlসক্ষম হয়েছি কিন্তু এইচটিএমএল ফাইলটি সর্বদা খালি থাকে, অনাবৃত ব্লকগুলি বা% কভার ইত্যাদি সম্পর্কে কিছুই দেখানো হয় না কেবল টেবিলের শিরোনাম
TGW

1
সুতরাং ... ইস্তাম্বুল নামে একটি কাঠামো যার সি এল এল কমান্ড এনওয়াইসি? ভুল ... আমি এটি বিশ্বাস করি না!
টিভি

19

Blanket.js এছাড়াও নিখুঁত কাজ করে।

npm install --save-dev blanket

আপনার পরীক্ষা / টেস্ট.জেএস এর সামনে

require('blanket')({
    pattern: function (filename) {
        return !/node_modules/.test(filename);
    }
});

চালান mocha -R html-cov > coverage.html


প্রয়োজন ('কম্বল') ({প্যাটার্ন: ফাংশন (ফাইলের নাম) {রিটার্ন! / node_modules/.test (ফাইলের নাম);}});
jsan

4
2015 পর্যন্ত, কম্বল.জেএস আর রক্ষণাবেক্ষণ করা হয় না এবং ES6 সমর্থন করে না। ইস্তাম্বুল উচ্চ প্রস্তাবিত হয়।
তেরোই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.