আমি একটি পরীক্ষার ক্ষেত্রে একটি নেটওয়ার্ক অনুরোধ জমা দিচ্ছি, তবে এটি কখনও কখনও 2 সেকেন্ডেরও বেশি সময় নেয় (ডিফল্ট সময়সীমা)।
আমি কীভাবে একক পরীক্ষার ক্ষেত্রে সময়সীমা বাড়াতে পারি?
আমি একটি পরীক্ষার ক্ষেত্রে একটি নেটওয়ার্ক অনুরোধ জমা দিচ্ছি, তবে এটি কখনও কখনও 2 সেকেন্ডেরও বেশি সময় নেয় (ডিফল্ট সময়সীমা)।
আমি কীভাবে একক পরীক্ষার ক্ষেত্রে সময়সীমা বাড়াতে পারি?
উত্তর:
আপনি এখানে যান: http://mochajs.org/#test-level
it('accesses the network', function(done){
this.timeout(500);
[Put network code here, with done() in the callback]
})
তীর ফাংশনের জন্য নীচে হিসাবে ব্যবহার করুন:
it('accesses the network', (done) => {
[Put network code here, with done() in the callback]
}).timeout(500);
before(function(done){this.timeout(5 * 1000);...});
.timeout(500)
শেষেit(...).timeout(500)
আপনি যদি এস 6 তীরের ফাংশনগুলি ব্যবহার করতে চান তবে আপনি .timeout(ms)
নিজের it
সংজ্ঞাটির শেষে একটি যুক্ত করতে পারেন :
it('should not timeout', (done) => {
doLongThing().then(() => {
done();
});
}).timeout(5000);
কমপক্ষে এটি টাইপস্ক্রিপ্টে কাজ করে।
.timeout
মোচার জন্য নির্দিষ্ট টাইপযুক্ত টাইপগুলিতে অন্তর্ভুক্ত নয়: i.imgur.com/jQbWCn1.png - নিয়মিত পুরানো ফাংশন ব্যবহার করে this.timeout(2000)
বা this.slow(500)
সহ ত্রুটি ছাড়াই সংকলন করে
it
, এটি কাজ করে না describe
।
describe()
বা context()
?
.timeout
এখন DefinitelyTyped এর একজাতীয় উৎকৃষ্ট কফি typings মধ্যে অন্তর্ভুক্ত করা হয়: Mocha.IRunnable
। তবে, আপনি যদি এই টেস্টগুলি চালনার জন্য ওয়েবস্টর্ম আইডিই ব্যবহার করেন, তবে সাবধানতার একটি নোট: যে কোনও কারণেই হোক না কেন, ওয়েবস্টোরমের মোচা ইন্টিগ্রেশন প্লাগইনটি এখনও মচা পরীক্ষাগুলি .timeout()
সংযুক্ত করে সনাক্ত করতে পারে না (যার অর্থ 'পাশের কোনও' রান 'বোতামটি উপস্থিত নেই), এবং এইভাবে this.timeout()
পরিবর্তে ব্যবহারের অনুমতি দেওয়ার জন্য আমি তীর ফাংশন এড়িয়ে চলার পক্ষে আছি ।
(যেহেতু আমি আজ এটিতে ছুটেছি)
ES2015 ফ্যাট তীর সিনট্যাক্স ব্যবহার করার সময় সতর্কতা অবলম্বন করুন:
এটি ব্যর্থ হবে:
it('accesses the network', done => {
this.timeout(500); // will not work
// *this* binding refers to parent function scope in fat arrow functions!
// i.e. the *this* object of the describe function
done();
});
সম্পাদনা: কেন এটি ব্যর্থ হয়:
@ মন্তব্যগুলিতে যেমন উল্লেখ করা হয়েছে, ফ্যাট অ্যার ফাংশনগুলির নিজস্ব এই বাঁধাই নেই। অতএব, এটা সম্ভব নয় এটা কাজ জুড়তে এই কলব্যাক ও একটি প্রদান সময়সীমার ফাংশন।
নীচের লাইন : বর্ধিত সময়সীমা প্রয়োজন এমন ক্রিয়াকলাপগুলির জন্য তীর ফাংশন ব্যবহার করবেন না।
this
তীরের ক্রিয়াকলাপগুলির জন্য কোনও বাধ্যবাধকতা নেই - একইভাবে নয় যে তারা কোনও ধরণের, কেবল আলাদা suggest তাদের কেবল লেসিকাল স্কোপ রয়েছে। আপনি এটি অ-বিদ্যমানকে বাঁধতে পারবেন না। কেন যে .bind
, .call
ইত্যাদি এটা দিয়ে কাজ করে না।
this
জানি তার ট্র্যাক হারিয়েছি ।
আপনি যদি নোডজেএস ব্যবহার করে থাকেন তবে আপনি প্যাকেজ.জসনে টাইমআউট সেট করতে পারেন
"test": "mocha --timeout 10000"
তারপরে আপনি এনএমপি ব্যবহার করে চালাতে পারেন:
npm test
আপনি অন্য কোনও পদ্ধতির গ্রহণ এবং নেটওয়ার্ক রিসোর্সে কলটিকে স্টাব বা মক অবজেক্টের সাথে প্রতিস্থাপনের বিষয়েও ভাবতে পারেন। সিনন ব্যবহার করে , আপনি আপনার উন্নয়নের প্রচেষ্টাগুলিকে ফোকাস করে নেটওয়ার্ক পরিষেবা থেকে অ্যাপ্লিকেশনটি ডিকুয়াল করতে পারেন।
পরীক্ষার নাভগেশনের জন্য Express
:
const request = require('supertest');
const server = require('../bin/www');
describe('navegation', () => {
it('login page', function(done) {
this.timeout(4000);
const timeOut = setTimeout(done, 3500);
request(server)
.get('/login')
.expect(200)
.then(res => {
res.text.should.include('Login');
clearTimeout(timeOut);
done();
})
.catch(err => {
console.log(this.test.fullTitle(), err);
clearTimeout(timeOut);
done(err);
});
});
});
উদাহরণস্বরূপ পরীক্ষার সময় 4000 (4 এস)।
দ্রষ্টব্য: পরীক্ষার সময় যা বলা হয় তার setTimeout(done, 3500)
চেয়ে সামান্য done
তবে clearTimeout(timeOut)
এটি এই সমস্ত সময় ব্যবহারের চেয়ে এড়ায়।
এটি আমার পক্ষে কাজ করেছিল! এটির সাথে কাজ করার জন্য কিছু আগে খুঁজে পাওয়া যায়নি ()
describe("When in a long running test", () => {
it("Should not time out with 2000ms", async () => {
let service = new SomeService();
let result = await service.callToLongRunningProcess();
expect(result).to.be.true;
}).timeout(10000); // Custom Timeout
});