আমি দেখতে পেয়েছি যে কেবলমাত্র সময়সীমা বাড়ানোর "সমাধান" এটি এখানে কী ঘটছে তা অস্পষ্ট করে
- আপনার কোড এবং / অথবা নেটওয়ার্ক কলগুলি খুব ধীর (ভাল ব্যবহারকারীর অভিজ্ঞতার জন্য 100 এমএস হওয়া উচিত)
- দাবিগুলি (পরীক্ষাগুলি) ব্যর্থ হচ্ছে এবং মোচা তাদের উপর অভিনয় করতে সক্ষম হওয়ার আগে কিছু ত্রুটিগুলি গ্রাস করছে।
আপনি যখন মুচা কলব্যাক থেকে দৃser়তা ত্রুটিগুলি না পান তখন আপনি সাধারণত # 2 এর মুখোমুখি হন। এটি ব্যতিক্রমটিকে আরও গিলে ফেলে অন্য কিছু কোডের কারণে ঘটেছিল। এর সাথে ডিল করার সঠিক উপায়টি কোডটি ঠিক করা এবং ত্রুটিটি গ্রাস না করা ।
যখন বাহ্যিক কোডগুলি আপনার ত্রুটিগুলি গ্রাস করে
যদি এটি কোনও লাইব্রেরির ফাংশন হয় যা আপনি সংশোধন করতে অক্ষম হন তবে আপনাকে দৃ error়তা ত্রুটিটি ধরা এবং এটি নিজেকে মোচায় দেওয়ার দরকার। আপনি নিজের দৃ call়তা কলব্যাককে চেষ্টা / ধরা ব্লকে মোড়ক করে এবং সম্পন্ন হ্যান্ডলারের কোনও ব্যতিক্রম পাস করার মাধ্যমে এটি করেন।
it('should not fail', function (done) { // Pass reference here!
i_swallow_errors(function (err, result) {
try { // boilerplate to be able to get the assert failures
assert.ok(true);
assert.equal(result, 'bar');
done();
} catch (error) {
done(error);
}
});
});
এই বয়লারপ্লেটটি অবশ্যই পরীক্ষাটিকে কিছুটা আনন্দদায়ক করার জন্য কিছু ইউটিলিটি ফাংশনে সরানো যেতে পারে:
it('should not fail', function (done) { // Pass reference here!
i_swallow_errors(handleError(done, function (err, result) {
assert.equal(result, 'bar');
}));
});
// reusable boilerplate to be able to get the assert failures
function handleError(done, fn) {
try {
fn();
done();
} catch (error) {
done(error);
}
}
নেটওয়ার্ক পরীক্ষার গতি বাড়িয়ে দেওয়া
এগুলি ব্যতীত আমি আপনাকে সুপারিশ করছি যে কোনও কার্যকরী নেটওয়ার্কের উপর নির্ভর না করেই পরীক্ষাগুলি পাসের জন্য নেটওয়ার্ক কলগুলির জন্য টেস্ট স্টাবগুলি ব্যবহার শুরু করার পরামর্শটি বেছে নিন। মোচা, চই এবং সিনন পরীক্ষাগুলি ব্যবহার করে এটির মতো দেখতে পারে
describe('api tests normally involving network calls', function() {
beforeEach: function () {
this.xhr = sinon.useFakeXMLHttpRequest();
var requests = this.requests = [];
this.xhr.onCreate = function (xhr) {
requests.push(xhr);
};
},
afterEach: function () {
this.xhr.restore();
}
it("should fetch comments from server", function () {
var callback = sinon.spy();
myLib.getCommentsFor("/some/article", callback);
assertEquals(1, this.requests.length);
this.requests[0].respond(200, { "Content-Type": "application/json" },
'[{ "id": 12, "comment": "Hey there" }]');
expect(callback.calledWith([{ id: 12, comment: "Hey there" }])).to.be.true;
});
});
দেখুন Sinon এর nise
ডক্স আরও তথ্যের জন্য।