Web Development Asynchronous Callback Functions এর টেস্টিং গাইড ও নোট

229

JasmineJS এ Asynchronous Callback Functions (অ্যাসিঙ্ক্রোনাস কলেব্যাক ফাংশন) এর টেস্টিং করতে হলে আপনাকে কিছু বিশেষ পদ্ধতি অনুসরণ করতে হবে, কারণ অ্যাসিঙ্ক্রোনাস কোড সাধারণত টেস্ট কেসের ফাইনাল আউটপুট পাওয়ার আগে চলতে থাকে। JasmineJS এ অ্যাসিঙ্ক্রোনাস টেস্টের জন্য নির্দিষ্ট সুবিধা রয়েছে, যা আপনাকে অ্যাসিঙ্ক্রোনাস ফাংশন বা কলব্যাকের সাথে কাজ করার সময় সঠিকভাবে পরীক্ষা করতে সাহায্য করে।


Asynchronous Code টেস্ট করার প্রয়োজনীয়তা

অ্যাসিঙ্ক্রোনাস ফাংশনগুলির মধ্যে সাধারণত setTimeout(), setInterval(), বা প্রমিস (Promise) ব্যবহৃত হয়। এই ফাংশনগুলির মধ্যে কোনো একটি কাজ সম্পন্ন হওয়ার জন্য কিছু সময় লাগতে পারে, তাই আপনি যদি সঠিকভাবে টেস্ট করতে চান, তবে আপনাকে অ্যাসিঙ্ক্রোনাস কাজটির সম্পূর্ণ হওয়ার পর টেস্টের ফলাফল নিশ্চিত করতে হবে।

JasmineJS এ অ্যাসিঙ্ক্রোনাস কোডের টেস্টিং সাধারণত দুটি উপায় অনুসরণ করা হয়:

  1. done Callback ব্যবহার: এটি সরাসরি Jasmine এর টেস্ট কেসের মধ্যে একটি কলব্যাক ফাংশন হিসেবে ব্যবহৃত হয়।
  2. async এবং await ব্যবহার: এটি প্রমিস (Promise) ভিত্তিক টেস্টিংয়ের জন্য ব্যবহৃত হয়।

done Callback এর মাধ্যমে Asynchronous Testing

JasmineJS এ done একটি বিশেষ ফাংশন যা আপনি টেস্ট কেসে অ্যাসিঙ্ক্রোনাস কাজ সম্পন্ন হওয়ার পরে টেস্টটি শেষ করার জন্য ব্যবহার করেন। done ফাংশন টেস্টের অ্যাসিঙ্ক্রোনাস কার্যকলাপ শেষ হওয়ার পরে টেস্ট কেসটি পাস বা ফেইল করতে সহায়তা করে।

done Callback ব্যবহার করার উদাহরণ:

describe("Asynchronous Test with done callback", function() {
  it("should test an asynchronous function", function(done) {
    setTimeout(function() {
      const result = 2 + 3;
      expect(result).toBe(5);  // অ্যাসিঙ্ক্রোনাস কাজের পর টেস্ট
      done();  // done কল করে টেস্ট শেষ করা হবে
    }, 1000);  // 1 সেকেন্ড পরে কাজটি সম্পন্ন হবে
  });
});

এখানে:

  • done(): setTimeout() এর শেষে done() কল করা হয়েছে যাতে Jasmine জানে যে অ্যাসিঙ্ক্রোনাস কাজটি সম্পন্ন হয়েছে।
  • Jasmine অ্যাসিঙ্ক্রোনাস কোডের জন্য অপেক্ষা করবে যতক্ষণ না done() কল করা হয়।

Promises ব্যবহার করে Asynchronous Testing

JasmineJS এর সর্বশেষ সংস্করণে আপনি async এবং await ব্যবহার করতে পারেন প্রমিস ভিত্তিক অ্যাসিঙ্ক্রোনাস ফাংশন টেস্ট করার জন্য। এটি আরো আধুনিক এবং পরিষ্কার পদ্ধতি।

Promise এর মাধ্যমে Asynchronous Testing এর উদাহরণ:

describe("Asynchronous Test with Promises", function() {
  it("should test a promise", function() {
    return new Promise(function(resolve, reject) {
      setTimeout(function() {
        const result = 2 + 3;
        resolve(result);  // প্রমিসের মাধ্যমে ফলাফল ফেরত দেওয়া হবে
      }, 1000);
    }).then(function(result) {
      expect(result).toBe(5);  // প্রমিস শেষ হলে টেস্ট
    });
  });
});

এখানে:

  • Promise: setTimeout এর মাধ্যমে একটি প্রমিস তৈরি করা হয়েছে।
  • then(): প্রমিসের সম্পূর্ণ হওয়ার পরে .then() ব্যবহার করে ফলাফল যাচাই করা হয়েছে।

async এবং await ব্যবহার করে Asynchronous Testing

JasmineJS এ async এবং await ব্যবহার করে প্রমিস ভিত্তিক অ্যাসিঙ্ক্রোনাস টেস্টিং আরো পরিষ্কার এবং কার্যকরী হতে পারে।

async এবং await এর মাধ্যমে Asynchronous Testing এর উদাহরণ:

describe("Asynchronous Test with async/await", function() {
  it("should test an async function", async function() {
    const result = await new Promise(function(resolve) {
      setTimeout(function() {
        resolve(2 + 3);
      }, 1000);
    });

    expect(result).toBe(5);  // await ব্যবহার করে প্রমিসের ফলাফল যাচাই
  });
});

এখানে:

  • async: it() ব্লকটি অ্যাসিঙ্ক্রোনাস ফাংশন হিসেবে চিহ্নিত করা হয়েছে।
  • await: এটি প্রমিসের ফলাফল পাওয়ার জন্য ব্যবহৃত হয়েছে এবং এর পরবর্তী কোডটি প্রমিস সম্পন্ন হওয়ার পরে চালানো হয়।

সারাংশ

  • Asynchronous Testing: অ্যাসিঙ্ক্রোনাস ফাংশন বা কোডের কার্যকারিতা পরীক্ষা করার জন্য JasmineJS এ কিছু বিশেষ পদ্ধতি রয়েছে, যেমন done কলব্যাক এবং async/await ব্যবহার।
  • done Callback: এটি অ্যাসিঙ্ক্রোনাস কোড সম্পন্ন হওয়ার পর টেস্ট কেস শেষ করতে ব্যবহৃত হয়।
  • async এবং await: এই পদ্ধতি প্রমিস ভিত্তিক অ্যাসিঙ্ক্রোনাস টেস্টিং করার একটি আধুনিক এবং পরিষ্কার পদ্ধতি।

এই পদ্ধতিগুলির মাধ্যমে আপনি অ্যাসিঙ্ক্রোনাস কোডের সঠিকভাবে টেস্টিং করতে পারবেন এবং JasmineJS টেস্টের কার্যকারিতা বাড়াতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...