মোচা পরীক্ষার ডিরেক্টরি কীভাবে নির্দিষ্ট করবেন?


219

মোচাtest ডিফল্টরূপে পরীক্ষা ফাইলগুলি অনুসন্ধান করার চেষ্টা করে, আমি কীভাবে অন্য একটি দির নির্দিষ্ট করব server-test?


আপনার প্রশ্নের 100% উত্তর না হলেও, jaketrent.com/post/run-single-mocha-test দেখুন - একটি নির্দিষ্ট পরীক্ষার স্যুটটি কীভাবে চালানো যায় তা সন্ধান করতে আমি এখানে এসেছি এবং এটি আপনাকে ব্যবহার করতে পারে .onlyএবং .skipকোন পরীক্ষাগুলি আপনাকে পরিচালনা করতে পারে তা দেখায় চলমান. কোনও নির্দিষ্ট বৈশিষ্ট্য বিকাশের সময় আপনি যখন পুরো টেস্ট স্যুটটি সারাক্ষণ চালানোর জন্য অপেক্ষা করতে চান না তখন গুরুত্বপূর্ণ।
ডেভ সাগ

উত্তর:


141

সম্পাদনা করুন: এই বিকল্পটি অবচিত করা হয়েছে: https://mochajs.org/#mochaopts


আপনি যদি কেবল mochaকমান্ড লাইনে চালিয়ে এটি করতে চান তবে তার ./server-testsপরিবর্তে কোনও ফোল্ডারে পরীক্ষা চালাতে চেয়েছিলেন তবে কেবল ./testফাইলটিতে এই ফাইলটি তৈরি ./test/mocha.optsকরুন:

server-tests

আপনি যদি সেই ফোল্ডার এবং উপ-ডিরেক্টরিগুলির মধ্যে সমস্ত কিছু চালাতে চান তবে এটি এতে রেখে দিন test/mocha.opts

server-tests
--recursive

mocha.opts কমান্ড লাইনের মাধ্যমে আর্গুমেন্টগুলি পাস হয়েছে, সুতরাং প্রথম লাইনটি কেবলমাত্র ডিরেক্টরিটি আপনি পরীক্ষা পরিবর্তন করতে চান সেটি থেকে পুনর্নির্দেশ করা হবে ./test/


12
এটি সর্বনিম্ন ঘর্ষণ সহ বিকল্প, এবং স্বীকৃত উত্তর হওয়া উচিত আইএমএইচও
নিক টমলিন

আমি একটি বয়লার প্লেট ব্যবহার করছি এবং এটি নীচের লাইনে, উইন্ডোগুলির কারণে হতে পারে, আপনি একবার চেক করতে পারেন / - কম্পাইলার্স জেএস: ব্যাবেল-কোর / রেজিস্টার
কোবে

1
একটি মণি, ওয়েবস্টর্ম আইডিই মোচা ডিবাগ কনফিগারেশনগুলির সাথে দুর্দান্তভাবে খেলবে, কেবল "ফাইলের ধরণগুলি" নির্বাচন করুন এবং ইনপুটটি খালি ছেড়ে দেবে এবং এটি mocha.opts ব্যবহার করবে
danday74

3
এটি অবশ্যই সেরা উত্তর। সম্ভবত আপনার উত্তরে এটি যুক্ত করাও উপযুক্ত হবে যে mocha.optsফাইলটি যেখানেই আপনি চান সেখানে স্থাপন করা যেতে পারে, এবং তারপরে mochaউদাহরণস্বরূপ এর কনফিগার ফাইলের পাথ নির্দিষ্ট করে mocha --opts ./mocha.opts
সম্পাদন করুন

1
আপনার কাছে শুধু যদি আপনি আপনার package.json পরীক্ষা স্ক্রিপ্ট সংজ্ঞায়িত একজাতীয় উৎকৃষ্ট কফি কমান্ড লাইনে --recursive করা হতে পারে, দরকারী
unludo

282

এটা ব্যবহার কর:

mocha server-test

বা আপনার যদি উপ-ডিরেক্টরি থাকে তবে এটি ব্যবহার করুন:

mocha "server-test/**/*.js"

ডাবল উদ্ধৃতি ব্যবহার নোট করুন। আপনি যদি এগুলি বাদ দেন তবে আপনি সাব-ডিরেক্টরিতে পরীক্ষা চালাতে পারবেন না।


1
এটি আমার পক্ষে কাজ করে না। যদি আমি এটি এইভাবে করতে চাই তবে আমাকে করতে হবেmocha test/server-test
জনি

22
ডাবল উদ্ধৃতি ইস্যুটি আমাকে যুগ যুগ ধরে! আমার বিচক্ষণতা বাঁচানোর জন্য আপনাকে ধন্যবাদ। এই ডাবল উক্তিগুলিতে অতিরিক্ত যত্ন দেওয়ার জন্য এটি পড়তে প্রত্যেককে চিত্কার করুন।
ctrlplusb

11
আমার ক্ষেত্রে, আমি ব্যবহার করছিলাম mocha ./**/*.test.js(যাতে আমি মডিউল ফাইলের সাথে পরীক্ষার ফাইলটি কলোক করতে পারি)। বাকী পরীক্ষাগুলির তুলনায় আমি যখন ফাইলের শ্রেণিবিন্যাসের ভিন্ন স্তরে একটি পরীক্ষা ফাইল যুক্ত করেছি তখন এই প্যাটার্নটি আমার জন্য কাজ করা বন্ধ করে দিয়েছে এবং কেবলমাত্র একটি অদ্ভুত বলের ফাইলটি খুঁজে পাবে যে হায়ারার্কিতে একই স্তরে বসবাসকারী আরও ডজন ডজন । উদ্ধৃতিতে মোড়ানো এটি ঠিক করে দিয়েছে।
স্টুটি

1
বা কেবল --recursiveনীচে ব্যাখ্যা হিসাবে ব্যবহার করুন
জেফ ডিকি

4
এই উত্তর হওয়া উচিত! ডাবল
মিনহ থাই

81

এখানে একটি উপায়, যদি আপনার পরীক্ষার ফোল্ডারে যেমন সাবফোল্ডার থাকে তবে

/test
/test/server-test
/test/other-test

তারপরে লিনাক্সে আপনি সমস্ত * .js ফাইলগুলি পুনরাবৃত্তভাবে তালিকাভুক্ত করতে এবং এটি মোচায় পাস করতে ফাইন্ড কমান্ডটি ব্যবহার করতে পারেন:

mocha $(find test -name '*.js')

29
বা কেবল --recursiveনীচে ব্যাখ্যা হিসাবে ব্যবহার করুন
জেফ ডিকি

5
সুতরাং অন্য কথায় mochaকনফিগে কাঙ্ক্ষিত ডিরেক্টরি কাঠামো সেট করার কোনও বিকল্প নেই?
সবুজ

ক্লায়েন্ট ব্যবহারকারী $ মোচা $ (পরীক্ষাগুলি খুঁজে নিন '* .js') -বাশ: মোচা: আদেশটি পাওয়া যায় নি; এই ত্রুটি পাওয়া।
lft93ryt

1
এটি অত্যন্ত জটিল এবং বিভ্রান্তিমূলক। ওএস কমান্ড ব্যবহার না করে মোচা বিকল্পগুলি পছন্দ করুন।
মাইকেল বুশে

আপনার পোস্ট প্রশ্নের উত্তর দেয় না
ekkis

30

এটি করার দুর্দান্ত উপায় হ'ল প্যাকেজ.জসনে একটি "পরীক্ষা" এনপিএম স্ক্রিপ্ট যুক্ত করা যা সঠিক যুক্তি দিয়ে মোচাকে ডাকে। এইভাবে আপনার প্যাকেজ.জসন আপনার পরীক্ষার কাঠামোও বর্ণনা করে। এটি অন্যান্য উত্তরে এই সমস্ত ক্রস-প্ল্যাটফর্ম সমস্যাগুলি এড়িয়ে যায় (ডাবল বনাম একক উদ্ধৃতি, "সন্ধান করুন" ইত্যাদি)

"টেস্ট" ডিরেক্টরিতে মোছা সমস্ত জেএস ফাইল চালাতে হবে:

"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


এটি আমার অনুমানের এটি করার সবচেয়ে সঠিক উপায়।
আর্টুর

29

-G বা --grep বিকল্পটি ব্যবহার করবেন না, এই প্যাটার্নটি ফাইল সিস্টেমের পরিবর্তে এর ভিতরে পরীক্ষার নামে চালিত হয়। বর্তমান ডকুমেন্টেশন বিভ্রান্তিকর এবং / বা এ সম্পর্কে একেবারে ভুল। পুরো কমান্ডটি ফাইল সিস্টেমের কোনও অংশে সীমাবদ্ধ করতে, আপনি শেষ আর্গুমেন্ট হিসাবে এটি একটি প্যাটার্নটি পাস করতে পারেন (এটি কোনও পতাকা নয়)।

উদাহরণস্বরূপ, এই কমান্ডটি আপনার প্রতিবেদকটিকে নির্দিষ্ট হিসাবে সেট করবে তবে সার্ভার-পরীক্ষা ডিরেক্টরিটির সাথে সাথে কেবল js ফাইলগুলি পরীক্ষা করবে:

mocha --reporter spec server-test/*.js

এই আদেশটি উপরের মতো একই কাজ করবে, এবং এটি কেবল পরীক্ষার ক্ষেত্রে চালিত হবে যেখানে পরীক্ষার () স্ট্রিং / সংজ্ঞা "ফনর্ড:" দিয়ে শুরু হয়:

mocha --reporter spec --grep "Fnord:" server-test/*.js

22

যদি নোড.জেজে থাকে , মোচা ভি 6 হিসাবে কিছু নতুন কনফিগারেশন রয়েছে :

বিকল্প 1: .mocharc.jsonপ্রকল্পের মূল ডিরেক্টরিটি তৈরি করুন :

{
  "spec": "path/to/test/files"
}

বিকল্প 2: mochaপ্রকল্পের সম্পত্তি যুক্ত করুন package.json:

{
  ...

  "mocha": {
    "spec": "path/to/test/files"
  }
}

আরও বিকল্প এখানে


20

test_directoryমেলে এমন সাব ডিরেক্টরিগুলি সহ সমস্ত ফাইল চালানtest.js

find ./parent_test_directory -name '*test.js' | xargs mocha -R spec

বা --recursiveসুইচ ব্যবহার করুন

mocha --recursive test_directory/

11

আমার এখনই এই সমস্যাটি ছিল এবং --recursiveবিকল্পটি (যা আমি সেট করেছিলাম) সরিয়ে এবং উপরে প্রস্তাবিত একই কাঠামোটি ব্যবহার করে এটি সমাধান করেছি :

mochify "test/unit/**/*.js"

এটি /test/unit/আমার অধীনে সমস্ত ডিরেক্টরিতে সমস্ত পরীক্ষা চালিয়েছে অন্য অনূদিত ডিরেক্টরিগুলি উপেক্ষা করার সময়/test/


9

এখন একটি দিন (বছর ২০২০) আপনি মোচা কনফিগারেশন ফাইলটি ব্যবহার করে এটি পরিচালনা করতে পারবেন :

পদক্ষেপ 1: আপনার অ্যাপ্লিকেশনটির মূল স্থানে .mocharc.js ফাইল তৈরি করুন

পদক্ষেপ 2: যোগ নীচের কোড একজাতীয় উৎকৃষ্ট কফি কনফিগ ফাইলে:

'use strict';

module.exports = {
  spec: 'src/app/**/*.test.js'
};

কনফিগ ফাইলে আরও বিকল্পের জন্য এই লিঙ্কটিটি দেখুন: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js


3

আমি উইন্ডোজ 7 এ নোড.জেএস ভি0.10.0 এবং মোচা ভি 1.8.2 এবং এনপিএম ভি 1.2.14 ব্যবহার করছি। আমি আমার পরীক্ষাগুলি সন্ধানের জন্য পাথ পরীক্ষা / ইউনিটটি ব্যবহার করার জন্য কেবল মোচা চেষ্টা করার চেষ্টা করছিলাম, দীর্ঘ সময় ব্যয় করার পরে এবং আমি যে কয়েকটি জিনিস অবতরণ করেছি,

"টেস্ট / ইউনিট / *। জেএস" বিকল্পটি উইন্ডোতে কাজ করে না। ভাল কারণে যে উইন্ডোজ শেল ইউনিক্সনের মতো ওয়াইল্ডকার্ডগুলি প্রসারিত করে না।

তবে "টেস্ট / ইউনিট" ব্যবহার করা ফাইলের ধরণ ছাড়াই কাজ করে। যেমন। "মোচা পরীক্ষা / ইউনিট" পরীক্ষা / ইউনিটের ফোল্ডারে পাওয়া সমস্ত ফাইল চালায়।

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

একটি একক পরীক্ষা ফাইল চালানোর জন্য আপনি পুরো পথ এবং ফাইলের নাম নির্দিষ্ট করতে পারেন। যেমন। "মোচা পরীক্ষা / ইউনিট / মাইয়েস্ট ১.জেএস"

আমি আসলে এনপিএম "স্ক্রিপ্টস": m "পরীক্ষা": "মোচা পরীক্ষা / ইউনিট"},

যাতে 'এনপিএম পরীক্ষা' আমার ইউনিট পরীক্ষা চালায়।


11
আজ --recursivemocha --recursive "some_dir"
অবধি

3
ব্যবহার node_modules\.bin\mocha "test\unit\*.js"Windows এ কাজ করে। এছাড়াও node_modules\.bin\mocha "**\*.js"কাজ করে (আমার আসল কেস)। তবে আমি নোড_মডিউলগুলি ডিরেক্টরি বাদ দেওয়ার কোনও উপায় খুঁজছি । (আমি gulpfile.js টিও ব্যবহার করি তবে কিছু সময় আমার সরাসরি মোচা দিয়ে পরীক্ষা শুরু করতে হবে)
অ্যালেক্স 75

3

আপনি যদি nodejsআপনার package.jsonআন্ডারে ব্যবহার করেন inscripts

  1. জন্য global (-g)ইনস্টলেশনের: "test": "mocha server-test"বা "test": "mocha server-test/**/*.js"subdocuments জন্য
  2. জন্য 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
পেড্রো এ

3

মন্তব্য হিসাবে ব্যবহারে @ সুপেরজোস দ্বারা উল্লিখিত

mocha --recursive "some_dir"


2

এটি পরীক্ষা ডিরেক্টরি পরিবর্তনের জন্য কোনও "সহজ" সমর্থন বলে মনে হয় না।
তবে, আপনার প্রশ্নের তুলনায় আপনার এই সমস্যাটি একবার দেখা উচিত ।


2

@ জেফ-ডিকির পরামর্শ অনুসারে, আপনার প্রকল্পের মূলটিতে, একটি ফোল্ডার কল করা উচিত test। সেই ফোল্ডারে, একটি ফাইল কল করুন mocha.opts। এখন যেখানে আমি জেফের উত্তরে উন্নতি করার চেষ্টা করছি, আমার জন্য যা কাজ করেছে তা কেবলমাত্র একটি পরীক্ষার ফোল্ডারের নাম উল্লেখ করার পরিবর্তে, আমি এই লাইনটি যুক্ত করে আমার প্রকল্পে চালানোর জন্য সমস্ত পরীক্ষার সন্ধান করার জন্য একটি প্যাটার্ন নির্দিষ্ট করেছি:

*/tests/*.js --recursive ভিতরে mocha.opts

আপনি যদি পরিবর্তে পরীক্ষার সন্ধানের জন্য সঠিক ফোল্ডারগুলি নির্দিষ্ট করতে চান তবে আমি এরকম কিছু করেছি:

shared/tests/*.js --recursive
server/tests/graph/*.js --recursive

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

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