মোচার জন্য ডিফল্ট সময়সীমা পরিবর্তন করুন


161

যদি আমাদের ইউনিট পরীক্ষার ফাইলটি থাকে আমার-স্পেস.জেএস এবং মোচা দিয়ে চলছে:

mocha my-spec.js

ডিফল্ট সময়সীমা 2000 এমএস হবে। কমান্ড লাইন প্যারামিটার দিয়ে আংশিক পরীক্ষার জন্য এটি ওভাররাইট করা যেতে পারে:

mocha my-spec.js --timeout 5000

সমস্ত পরীক্ষার জন্য বিশ্বব্যাপী ডিফল্ট সময়সীমা পরিবর্তন করা সম্ভব? যেমন আপনি যখন কল করবেন তখন ডিফল্ট সময়সীমা মান 2000 এমএস থেকে আলাদা হবে:

mocha my-spec.js

উত্তর:


305

ডিফল্টরূপে মোচা এমন একটি ফাইল পড়বে test/mocha.optsযা কমান্ড লাইনের আর্গুমেন্ট ধারণ করতে পারে। সুতরাং আপনি এই জাতীয় ফাইল তৈরি করতে পারেন:

--timeout 5000

আপনি যখনই কমান্ড লাইনে মোচা চালাবেন, এটি এই ফাইলটি পড়বে এবং ডিফল্টরূপে 5 সেকেন্ডের টাইমআউট সেট করবে।

আপনার পরিস্থিতির উপর নির্ভর করে আরও ভাল যা হতে পারে তা হ'ল এটির describeপরীক্ষার ফাইলে একটি শীর্ষ স্তরের কলটিতে এটি সেট করা :

describe("something", function () {
    this.timeout(5000); 

    // tests...
});

এটি আপনাকে প্রতি ফাইলের ভিত্তিতে টাইমআউট সেট করতে দেয়।

আপনি 5000 টির গ্লোবাল ডিফল্ট চাইলে আপনি উভয় পদ্ধতি ব্যবহার করতে পারেন তবে কিছু ফাইলের জন্য আলাদা কিছু সেট করে।


নোট করুন যে আপনি কল করতে চলেলে আপনি সাধারণত তীর ফাংশনটি ব্যবহার করতে পারবেন না this.timeout(বা thisসেই মোচা সেটগুলির কোনও অন্য সদস্যকে আপনার জন্য সেট করে)। উদাহরণস্বরূপ, এটি সাধারণত কাজ করবে না :

describe("something", () => {
    this.timeout(5000); //will not work

    // tests...
});

এর কারণ এটি একটি তীর ফাংশনটি thisফাংশনটি উপস্থিত হওয়ার সুযোগ থেকে নেয় M মোচা একটি ভাল মান সহ ফাংশনটি কল করবে thisতবে তীর ফাংশনের ভিতরে সেই মানটি পাস করা হবে না। মোচার জন্য ডকুমেন্টেশন এই বিষয়ে বলেছেন :

তীর ফাংশনগুলি ("ল্যাম্বডাস") মোচায় প্রবেশ করা নিরুৎসাহিত করা হয়েছে। এর যৌক্তিক বাঁধার কারণে, এই জাতীয় ফাংশনগুলি মোচা প্রসঙ্গে অ্যাক্সেস করতে অক্ষম।


1
তথ্যের জন্য ধন্যবাদ. তবে আমি mocha.opts ফাইলটি সংশোধন করার চেষ্টা করেছি, তবে এটি প্রভাবিত করে না।
এলএম

2
আপনি কি এটি সঠিক জায়গায় তৈরি করেছেন? মোচা এই ফাইলটি কোথায় চায় সে সম্পর্কে খুব সুনির্দিষ্ট। আপনি যদি মোচা চালনা করেন /home/me/src/proj/তবে মোচা এই ফাইলটির সন্ধান করতে চলেছে:/home/me/src/proj/test/mocha.opts
লুই

অনেক ধন্যবাদ . এখন পরিবর্তন প্রভাবিত
এলএম।

this.timeout (10000); // ডিফল্ট সময়সীমার ^ TypeError: this.timeout স্যুটে কোন ফাংশন নয় <বেনামী> (/Users/jeff.l/Documents/workspace/unit-tests/mocha-chai_tests/checkoutTest.js:12:10)।
জেফ লোয়ার

6
@ জেফলওয়ারি আপনি কি একটি তীর ফাংশন ব্যবহার করছেন? তীর ফাংশনগুলি কোনও নতুন প্রতিষ্ঠিত করে না this, যা সাধারণত this.timeoutআপনার মন্তব্যে দেখানোর মতো ব্যর্থ হয়।
লুই

62

কেবলমাত্র সঠিক উত্তরে যুক্ত করে আপনি তীর ফাংশনটির সাথে টাইমআউটটি সেট করতে পারেন:

it('Some test', () => {

}).timeout(5000)

7
প্রশ্নটি হল "সমস্ত পরীক্ষার জন্য বিশ্বব্যাপী ডিফল্ট সময়সীমা পরিবর্তন"। আপনার উত্তর শুধুমাত্র একটি পরীক্ষা পরিবর্তন। describe('suite', () => {...}).timeout(5000)কাজ করে না
আলেং

পূর্ববর্তী উত্তরের মতো, প্রস্তাবিত সমাধানটি বর্তমানে অকার্যকর। mochajs.org/# টাইমআউটগুলিsetTimeout পরীক্ষার ভিতরে সুস্পষ্ট নির্দেশাবলী সন্নিবেশ করানোর জন্য বলে to
মার্কো ফাউস্টিনেল্লি

এটি আমার পক্ষে মোচা 5 এর সাথে কাজ করেছে (একটি নির্দিষ্ট পরীক্ষার জন্য)
ফার্নান্দো গ্যাব্রিয়েলি

@ মারকো ফাউস্টাইনেলি আপনি ডক্সকে ভুল বুঝছেন। সেটটাইমআউটসের সাথে মোচার কোনও সম্পর্ক নেই। টাইমআউট সেটিংসের প্রভাবগুলি প্রদর্শন করার জন্য তারা সেখানে রয়েছে।
অলিগোফ্রেন

33

সম্পূর্ণতার জন্য এটি যুক্ত করা হচ্ছে। আপনি যদি (আমার মতো) আপনার package.jsonফাইলে কোনও স্ক্রিপ্ট ব্যবহার করেন তবে কেবল --timeoutমোচাতে বিকল্প যুক্ত করুন :

"scripts": {
  "test": "mocha 'test/**/*.js' --timeout 10000",
  "test-debug": "mocha --debug 'test/**/*.js' --timeout 10000"
},

তারপরে আপনি npm run testটাইমআউট 10,000 মিলিসেকেন্ডে সেট করে আপনার পরীক্ষা স্যুট চালানোর জন্য চালাতে পারেন ।


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

25

মোচার বর্তমান সংস্করণগুলিতে, বিশ্বব্যাপী সময়সীমাটি এভাবে পরিবর্তন করা যেতে পারে:

mocha.timeout(5000);

আপনার টেস্ট স্যুটটিতে যেকোন জায়গায় উপরের লাইনটি যুক্ত করুন, পছন্দ হিসাবে আপনার অনুমানের শীর্ষে বা একটি পৃথক পরীক্ষা সহায়ক।


পুরানো সংস্করণগুলিতে এবং শুধুমাত্র একটি ব্রাউজারে আপনি বৈশ্বিক কনফিগারেশন ব্যবহার করে পরিবর্তন করতে পারেন mocha.setup

mocha.setup({ timeout: 5000 });

ডকুমেন্টেশন বিশ্বব্যাপী সময়সীমার সেটিং কাভার করে না, কিন্তু অফার কিভাবে অন্যান্য সাধারণ পরিস্থিতিতে সমাপ্তির সময় পরিবর্তন করতে উপর কয়েকটি উদাহরণ।


5
এটি নোডে কাজ করে না। স্ট্যাকওভারফ্লো . com/a/47915119/893113 দেখুন । দেখে মনে হচ্ছে সিএলআই বিকল্পটি একমাত্র উপায়।
পৌলমনিকো

আমি ব্রাউজারেও কাজ করি না। আজকের হিসাবে, উত্তরে লিঙ্কযুক্ত ডকুমেন্টেশনগুলিতে কোনও timeoutপরামিতি উল্লেখ করা হয়নি। বিপরীতে, mochajs.org/#timeoutssetTimeout পরীক্ষাগুলির ভিতরে সুস্পষ্ট নির্দেশাবলী সন্নিবেশ করানোর জন্য বলে ।
মার্কো ফাউস্টিনেল্লি

@ মারকো ফাউস্টাইনেলি আপনি ডক্সকে ভুল বুঝছেন। সেটটাইমআউটসের সাথে মোচার কোনও সম্পর্ক নেই। টাইমআউট সেটিংসের প্রভাবগুলি প্রদর্শন করার জন্য তারা সেখানে রয়েছে।
অলিগোফ্রেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.