আমি জুঁই-নোড অ্যাসিঙ্ক স্পেকের সময়সীমাটি কীভাবে পরিবর্তন করব


90

আমি কীভাবে এই পরীক্ষাগুলি রান / ওয়েটস ব্লকস অবলম্বন না করে পাস করতে পারি?

it("cannot change timeout", function(done) {

     request("http://localhost:3000/hello", function(error, response, body){

         expect(body).toEqual("hello world");

         done();
     });
});

উত্তর:


105

আপনি (এখন) জেসমিন ডক্স অনুসারে এটি সরাসরি নকশায় সেট করতে পারেন ।

describe("long asynchronous specs", function() {

    var originalTimeout;

    beforeEach(function() {
        originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
        jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
    });

    it("takes a long time", function(done) {
        setTimeout(function() {
            done();
        }, 9000);
    });

    afterEach(function() {
        jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
    });
});

হ্যাঁ, বদলানো jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;মান আমার জন্য জেসমিন + জাস্ট ব্যবহার করে স্ক্র্যাচ থেকে তৈরি একটি ব্র্যান্ড নিউ সেটআপে কৌশলটি করেছে। এটি প্রত্যাশার মতো কাজ করে।
Ignacio Segura

আমি সম্মত @ উইলডি, ক্লাউডোনারি নিয়ে রান্নিগ পরীক্ষা চালিয়েছি এবং এই ছোট্ট স্নিপেটটি আমার উদ্ধারে এসেছিল।
দেব ইয়েগো

4
সম্ভবত এটি লক্ষণীয় যে এটি আগে ঘটতে হবে it। আপনি যখন পরীক্ষায় doneরয়েছেন তখন মনে হচ্ছে ইতিমধ্যে যা শুরু DEFAULT_TIMEOUT_INTERVALহয়েছিল তার মধ্যে ইতিমধ্যে .ুকে পড়েছে it
রাফিন


43

বিশ্বব্যাপী জেসমিন-নোডের সময়সীমা নির্ধারণ করতে, এটি করুন:

jasmine.getEnv().defaultTimeoutInterval = timeoutYouWouldPrefer;// e.g. 15000 milliseconds

README ডকটিতে ভুল তথ্য থাকা সত্ত্বেও ডিবাগিংয়ের মাধ্যমে .getEnv () অংশটি বের করার জন্য ডেভেলপার গ্যাব হিক্সের ক্রেডিট যা দাবি করে যে এটি জুঁই সেট করেই সম্পন্ন হয়েছে DE DEFAULT_TIMEOUT_INTERVAL।

যদি আপনি কেবল এটির () একটির জন্য কাস্টম টাইমআউট সেট করতে চান তবে আপনি সময়সীমা (মিলিসেকেন্ড) তৃতীয় আর্গুমেন্ট হিসাবে (স্ট্রিং স্টেটমেন্ট এবং ফাংশনের পরে) পাস করার চেষ্টা করতে পারেন। সেখানে যে কাজ হচ্ছে একটি উদাহরণ এখানে , কিন্তু আমি নিশ্চিত নই কি যদি কাস্টম সময়সীমার জুঁই এর ডিফল্ট চেয়ে দীর্ঘতর এটি তখনই ঘটতে হবে। আমি আশা করি এটি ব্যর্থ হবে।


28
2014 সালে এই উত্তরটি নিয়ে হোঁচট খাচ্ছে যে কারও জন্য আপডেট করুন: জুঁই 2 সেটিংস জুঁইয়ের জন্য DE ডিএএফএএল.এল.টি.এমইউইউআইআইএনআরএফ কাজ করে।
সাইমন গ্রোনিওল্ট

4
এটি আমার জন্য জেস্ট + জেসমিন ব্যবহার করে একেবারে নতুন সেটআপে কাজ করে। আমি সবেমাত্র jasmine.DEFAULT_TIMEOUT_INTERVAL = 12000;একটি গ্লোবাল কনফিগারেশন ফাইল যুক্ত করেছি যা আমি সমস্ত পরীক্ষার জন্য ব্যবহার করি এবং এটি প্রত্যাশা অনুযায়ী কাজ করে।
ইগনাসিও সেগুরা

23

দেখে মনে হচ্ছে আপনি এখন এটি itফাংশনের শেষ যুক্তি হিসাবে যুক্ত করতে পারেন :

describe('my test', function(){
    it('works', function(done){
        somethingAsync().then(done);
    }, 10000); // changes to 10 seconds
});

11

কৌণিক এ, এটি আপনার বর্ণনা ব্লকের বাইরে রাখুন:

jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;

এটি .spec.ts ফাইলের সমস্ত পরীক্ষার জন্য প্রযোজ্য




1

গুপ্তচরবৃত্তি করে কেন নয় setTimeout()?

কিছুটা এইরকম:

var spy = spyOn(window, 'setTimeout').andCallFake(function (func, timeout) {
    expect(timeout).toEqual(2500);
    func();
});

setTimeOut(function () { ... }, 2500);
expect(spy).toHaveBeenCalled();

4
ধন্যবাদ এগুলি ইন্টিগ্রেশন টেস্ট, নোড.জেএস একটি বহিরাগত পরিষেবাতে কল করে যা প্রায়শই ধীর হয়।
ব্রায়ান লো

এই উজ্জ্বল, এটি এটা সম্ভব প্রকৃত সময় সমাপ্ত জন্য পরীক্ষার অপেক্ষার না করে সময় শেষ পরীক্ষা করে তোলে
Guillaume,

এই ফ্যাশনে আমরা সময়ের সাথে অনুশীলন করি না এবং এখনই fn কে কল করি, যদিও আসলটি পরবর্তী চক্রের আগে কখনও এটি কল করে না।
আন্দ্রে ওয়ার্ল্যাং

0

আমার ক্ষেত্রে আমার একাধিক পরীক্ষার কেস ছিল এবং যখন আমি পূর্বোক্ত সমাধানটি ব্যবহার করছিলাম তখন এটি ব্যবহার করছিলাম:

    beforeEach(function() {
        originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
        jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
    });

প্রথম পরীক্ষার ক্ষেত্রে DEFAULT_TIMEOUT_INTERVAL আপডেট করা হয়নি, তাই আমাকে এটি যুক্ত করতে হয়েছিল:

  beforeAll(() => {
    jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
  })

সফলভাবে সমস্ত পরীক্ষা চালাতে আমার কোড।


-17

নিম্নলিখিত ফাইলটিতে j $ .DEFAULT_TIMEOUT_INTERVAL 10000 এ পরিবর্তন করুন: এনপিএম ode নোড_মডিউলগুলি as জুঁই-কোর \ lib \ জুঁই-কোর


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