উত্তর:
সম্পাদনা করুন: এই বিকল্পটি অবচিত করা হয়েছে: https://mochajs.org/#mochaopts
আপনি যদি কেবল mocha
কমান্ড লাইনে চালিয়ে এটি করতে চান তবে তার ./server-tests
পরিবর্তে কোনও ফোল্ডারে পরীক্ষা চালাতে চেয়েছিলেন তবে কেবল ./test
ফাইলটিতে এই ফাইলটি তৈরি ./test/mocha.opts
করুন:
server-tests
আপনি যদি সেই ফোল্ডার এবং উপ-ডিরেক্টরিগুলির মধ্যে সমস্ত কিছু চালাতে চান তবে এটি এতে রেখে দিন test/mocha.opts
server-tests
--recursive
mocha.opts
কমান্ড লাইনের মাধ্যমে আর্গুমেন্টগুলি পাস হয়েছে, সুতরাং প্রথম লাইনটি কেবলমাত্র ডিরেক্টরিটি আপনি পরীক্ষা পরিবর্তন করতে চান সেটি থেকে পুনর্নির্দেশ করা হবে ./test/
mocha.opts
ফাইলটি যেখানেই আপনি চান সেখানে স্থাপন করা যেতে পারে, এবং তারপরে mocha
উদাহরণস্বরূপ এর কনফিগার ফাইলের পাথ নির্দিষ্ট করে mocha --opts ./mocha.opts
এটা ব্যবহার কর:
mocha server-test
বা আপনার যদি উপ-ডিরেক্টরি থাকে তবে এটি ব্যবহার করুন:
mocha "server-test/**/*.js"
ডাবল উদ্ধৃতি ব্যবহার নোট করুন। আপনি যদি এগুলি বাদ দেন তবে আপনি সাব-ডিরেক্টরিতে পরীক্ষা চালাতে পারবেন না।
mocha test/server-test
mocha ./**/*.test.js
(যাতে আমি মডিউল ফাইলের সাথে পরীক্ষার ফাইলটি কলোক করতে পারি)। বাকী পরীক্ষাগুলির তুলনায় আমি যখন ফাইলের শ্রেণিবিন্যাসের ভিন্ন স্তরে একটি পরীক্ষা ফাইল যুক্ত করেছি তখন এই প্যাটার্নটি আমার জন্য কাজ করা বন্ধ করে দিয়েছে এবং কেবলমাত্র একটি অদ্ভুত বলের ফাইলটি খুঁজে পাবে যে হায়ারার্কিতে একই স্তরে বসবাসকারী আরও ডজন ডজন । উদ্ধৃতিতে মোড়ানো এটি ঠিক করে দিয়েছে।
--recursive
নীচে ব্যাখ্যা হিসাবে ব্যবহার করুন
এখানে একটি উপায়, যদি আপনার পরীক্ষার ফোল্ডারে যেমন সাবফোল্ডার থাকে তবে
/test
/test/server-test
/test/other-test
তারপরে লিনাক্সে আপনি সমস্ত * .js ফাইলগুলি পুনরাবৃত্তভাবে তালিকাভুক্ত করতে এবং এটি মোচায় পাস করতে ফাইন্ড কমান্ডটি ব্যবহার করতে পারেন:
mocha $(find test -name '*.js')
--recursive
নীচে ব্যাখ্যা হিসাবে ব্যবহার করুন
mocha
কনফিগে কাঙ্ক্ষিত ডিরেক্টরি কাঠামো সেট করার কোনও বিকল্প নেই?
এটি করার দুর্দান্ত উপায় হ'ল প্যাকেজ.জসনে একটি "পরীক্ষা" এনপিএম স্ক্রিপ্ট যুক্ত করা যা সঠিক যুক্তি দিয়ে মোচাকে ডাকে। এইভাবে আপনার প্যাকেজ.জসন আপনার পরীক্ষার কাঠামোও বর্ণনা করে। এটি অন্যান্য উত্তরে এই সমস্ত ক্রস-প্ল্যাটফর্ম সমস্যাগুলি এড়িয়ে যায় (ডাবল বনাম একক উদ্ধৃতি, "সন্ধান করুন" ইত্যাদি)
"টেস্ট" ডিরেক্টরিতে মোছা সমস্ত জেএস ফাইল চালাতে হবে:
"scripts": {
"start": "node ./bin/www", -- not required for tests, just here for context
"test": "mocha test/**/*.js"
},
তারপরে কেবল ধোঁয়া পরীক্ষার জন্য ফোন করুন:
npm test
আপনি এইভাবে সমস্ত প্রকল্পের সমস্ত পরীক্ষার চলাকে মানক করতে পারেন, সুতরাং যখন কোনও নতুন বিকাশকারী আপনার প্রকল্প বা অন্য কোনওটিতে শুরু হয়, তখন তারা জানে যে "এনপিএম পরীক্ষা" পরীক্ষা চালাবে। এর জন্য ভাল historicalতিহাসিক নজির রয়েছে (উদাহরণস্বরূপ, বেশিরভাগ পুরাতন স্কুল "প্রকল্পগুলিও" তৈরি করে)। এটি নিশ্চিতভাবে সিআইকে সহায়তা করে যখন সমস্ত প্রকল্পের একই পরীক্ষার আদেশ থাকে।
একইভাবে, আপনার কাছে দ্রুত "ধোঁয়া" পরীক্ষার একটি উপসেট থাকতে পারে যা আপনি মোচা চালাতে চাইতে পারেন:
"scripts": {
"test": "mocha test/**/*.js"
"smoketest": "mocha smoketest/**/*.js"
},
তারপরে কেবল ধোঁয়া পরীক্ষার জন্য ফোন করুন:
npm smoketest
আর একটি সাধারণ প্যাটার্ন হ'ল আপনার পরীক্ষাগুলি যে সূত্রটি পরীক্ষা করে সেই একই ডিরেক্টরিতে রাখুন, তবে পরীক্ষার ফাইলগুলিকে * .spec.js কল করুন। উদাহরণস্বরূপ: src / foo / foo.js src / foo / foo.spec.js দ্বারা পরীক্ষা করা হয়।
সম্মেলনের মাধ্যমে * .spec.js নামের সমস্ত পরীক্ষা চালাতে:
"scripts": {
"test": "mocha **/*.spec.js"
},
তারপরে সমস্ত পরীক্ষার কল করতে কল করুন:
npm test
প্যাটার্নটি এখানে দেখুন? ভাল. :) সমন্নয় পরাজয় Mura ।
-G বা --grep বিকল্পটি ব্যবহার করবেন না, এই প্যাটার্নটি ফাইল সিস্টেমের পরিবর্তে এর ভিতরে পরীক্ষার নামে চালিত হয়। বর্তমান ডকুমেন্টেশন বিভ্রান্তিকর এবং / বা এ সম্পর্কে একেবারে ভুল। পুরো কমান্ডটি ফাইল সিস্টেমের কোনও অংশে সীমাবদ্ধ করতে, আপনি শেষ আর্গুমেন্ট হিসাবে এটি একটি প্যাটার্নটি পাস করতে পারেন (এটি কোনও পতাকা নয়)।
উদাহরণস্বরূপ, এই কমান্ডটি আপনার প্রতিবেদকটিকে নির্দিষ্ট হিসাবে সেট করবে তবে সার্ভার-পরীক্ষা ডিরেক্টরিটির সাথে সাথে কেবল js ফাইলগুলি পরীক্ষা করবে:
mocha --reporter spec server-test/*.js
এই আদেশটি উপরের মতো একই কাজ করবে, এবং এটি কেবল পরীক্ষার ক্ষেত্রে চালিত হবে যেখানে পরীক্ষার () স্ট্রিং / সংজ্ঞা "ফনর্ড:" দিয়ে শুরু হয়:
mocha --reporter spec --grep "Fnord:" server-test/*.js
যদি নোড.জেজে থাকে , মোচা ভি 6 হিসাবে কিছু নতুন কনফিগারেশন রয়েছে :
বিকল্প 1: .mocharc.json
প্রকল্পের মূল ডিরেক্টরিটি তৈরি করুন :
{
"spec": "path/to/test/files"
}
বিকল্প 2: mocha
প্রকল্পের সম্পত্তি যুক্ত করুন package.json
:
{
...
"mocha": {
"spec": "path/to/test/files"
}
}
আরও বিকল্প এখানে ।
test_directory
মেলে এমন সাব ডিরেক্টরিগুলি সহ সমস্ত ফাইল চালানtest.js
find ./parent_test_directory -name '*test.js' | xargs mocha -R spec
বা --recursive
সুইচ ব্যবহার করুন
mocha --recursive test_directory/
আমার এখনই এই সমস্যাটি ছিল এবং --recursive
বিকল্পটি (যা আমি সেট করেছিলাম) সরিয়ে এবং উপরে প্রস্তাবিত একই কাঠামোটি ব্যবহার করে এটি সমাধান করেছি :
mochify "test/unit/**/*.js"
এটি /test/unit/
আমার অধীনে সমস্ত ডিরেক্টরিতে সমস্ত পরীক্ষা চালিয়েছে অন্য অনূদিত ডিরেক্টরিগুলি উপেক্ষা করার সময়/test/
এখন একটি দিন (বছর ২০২০) আপনি মোচা কনফিগারেশন ফাইলটি ব্যবহার করে এটি পরিচালনা করতে পারবেন :
পদক্ষেপ 1: আপনার অ্যাপ্লিকেশনটির মূল স্থানে .mocharc.js ফাইল তৈরি করুন
পদক্ষেপ 2: যোগ নীচের কোড একজাতীয় উৎকৃষ্ট কফি কনফিগ ফাইলে:
'use strict';
module.exports = {
spec: 'src/app/**/*.test.js'
};
কনফিগ ফাইলে আরও বিকল্পের জন্য এই লিঙ্কটিটি দেখুন: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
আমি উইন্ডোজ 7 এ নোড.জেএস ভি0.10.0 এবং মোচা ভি 1.8.2 এবং এনপিএম ভি 1.2.14 ব্যবহার করছি। আমি আমার পরীক্ষাগুলি সন্ধানের জন্য পাথ পরীক্ষা / ইউনিটটি ব্যবহার করার জন্য কেবল মোচা চেষ্টা করার চেষ্টা করছিলাম, দীর্ঘ সময় ব্যয় করার পরে এবং আমি যে কয়েকটি জিনিস অবতরণ করেছি,
"টেস্ট / ইউনিট / *। জেএস" বিকল্পটি উইন্ডোতে কাজ করে না। ভাল কারণে যে উইন্ডোজ শেল ইউনিক্সনের মতো ওয়াইল্ডকার্ডগুলি প্রসারিত করে না।
তবে "টেস্ট / ইউনিট" ব্যবহার করা ফাইলের ধরণ ছাড়াই কাজ করে। যেমন। "মোচা পরীক্ষা / ইউনিট" পরীক্ষা / ইউনিটের ফোল্ডারে পাওয়া সমস্ত ফাইল চালায়।
এটি কেবল পরীক্ষার হিসাবে একটি ফোল্ডার ফাইল চালায় তবে আপনি পরামিতি হিসাবে একাধিক ডিরেক্টরি নাম পাস করতে পারেন।
একটি একক পরীক্ষা ফাইল চালানোর জন্য আপনি পুরো পথ এবং ফাইলের নাম নির্দিষ্ট করতে পারেন। যেমন। "মোচা পরীক্ষা / ইউনিট / মাইয়েস্ট ১.জেএস"
আমি আসলে এনপিএম "স্ক্রিপ্টস": m "পরীক্ষা": "মোচা পরীক্ষা / ইউনিট"},
যাতে 'এনপিএম পরীক্ষা' আমার ইউনিট পরীক্ষা চালায়।
--recursive
mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
Windows এ কাজ করে। এছাড়াও node_modules\.bin\mocha "**\*.js"
কাজ করে (আমার আসল কেস)। তবে আমি নোড_মডিউলগুলি ডিরেক্টরি বাদ দেওয়ার কোনও উপায় খুঁজছি । (আমি gulpfile.js টিও ব্যবহার করি তবে কিছু সময় আমার সরাসরি মোচা দিয়ে পরীক্ষা শুরু করতে হবে)
আপনি যদি nodejs
আপনার package.json
আন্ডারে ব্যবহার করেন inscripts
global (-g)
ইনস্টলেশনের: "test": "mocha server-test"
বা "test": "mocha server-test/**/*.js"
subdocuments জন্যproject
ইনস্টলেশনের: "test": "node_modules/mocha/bin/mocha server-test"
বা "test": "node_modules/mocha/bin/mocha server-test/**/*.js"
subdocuments জন্যতারপরে আপনার পরীক্ষাগুলি সাধারণত চালান run npm test
npm run mocha "./test/*.spec.js!(~)"
গ্লোব যুক্তি উপেক্ষা করে, কিন্তু node_modules/.bin/mocha "./test/*.spec.js!(~)"
হয় না।
npm run mocha -- yourArgs
এটি পরীক্ষা ডিরেক্টরি পরিবর্তনের জন্য কোনও "সহজ" সমর্থন বলে মনে হয় না।
তবে, আপনার প্রশ্নের তুলনায় আপনার এই সমস্যাটি একবার দেখা উচিত ।
@ জেফ-ডিকির পরামর্শ অনুসারে, আপনার প্রকল্পের মূলটিতে, একটি ফোল্ডার কল করা উচিত test
। সেই ফোল্ডারে, একটি ফাইল কল করুন mocha.opts
। এখন যেখানে আমি জেফের উত্তরে উন্নতি করার চেষ্টা করছি, আমার জন্য যা কাজ করেছে তা কেবলমাত্র একটি পরীক্ষার ফোল্ডারের নাম উল্লেখ করার পরিবর্তে, আমি এই লাইনটি যুক্ত করে আমার প্রকল্পে চালানোর জন্য সমস্ত পরীক্ষার সন্ধান করার জন্য একটি প্যাটার্ন নির্দিষ্ট করেছি:
*/tests/*.js --recursive
ভিতরে mocha.opts
আপনি যদি পরিবর্তে পরীক্ষার সন্ধানের জন্য সঠিক ফোল্ডারগুলি নির্দিষ্ট করতে চান তবে আমি এরকম কিছু করেছি:
shared/tests/*.js --recursive
server/tests/graph/*.js --recursive
আমি আশা করি যে এটি অন্য উত্তরগুলি সরবরাহ করে তার চেয়ে বেশি প্রয়োজন এমন কাউকে সহায়তা করে
.only
এবং.skip
কোন পরীক্ষাগুলি আপনাকে পরিচালনা করতে পারে তা দেখায় চলমান. কোনও নির্দিষ্ট বৈশিষ্ট্য বিকাশের সময় আপনি যখন পুরো টেস্ট স্যুটটি সারাক্ষণ চালানোর জন্য অপেক্ষা করতে চান না তখন গুরুত্বপূর্ণ।