Promises এবং Async/Await ব্যবহার করে টেস্ট করা

Asynchronous টেস্টিং - জ্যাসমিনজেএস (JasmineJS) - Web Development

380

JasmineJS এ Promises এবং Async/Await ব্যবহার করে আপনি অ্যাসিঙ্ক্রোনাস কোডের টেস্ট করতে পারেন। অ্যাসিঙ্ক্রোনাস কোডের সাথে কাজ করার জন্য JasmineJS দুটি মূল পদ্ধতি প্রদান করে: Promises এবং Async/Await। এই দুটি পদ্ধতিই সঠিকভাবে টেস্ট লেখার সময় গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি API কল, ডেটাবেস অপারেশন বা দীর্ঘ সময়ের কার্যক্রম টেস্ট করছেন।


Promises ব্যবহার করে টেস্ট করা

JasmineJS Promise ভিত্তিক অ্যাসিঙ্ক্রোনাস টেস্টিং সমর্থন করে। যখন একটি Promise রিটার্ন করা হয়, JasmineJS এ done ফাংশন ব্যবহার করে টেস্টের সমাপ্তি সঠিকভাবে সিগন্যাল করা হয়।

সঠিক ব্যবহার:

describe("Testing Promises", function() {
  it("should resolve the promise correctly", function(done) {
    const promise = new Promise(function(resolve, reject) {
      setTimeout(function() {
        resolve("Success");
      }, 1000);
    });

    promise.then(function(result) {
      expect(result).toBe("Success");  // Promise সফলভাবে "Success" রিটার্ন করবে
      done();  // টেস্টটি শেষ হওয়ার জন্য done কল করতে হবে
    });
  });

  it("should reject the promise", function(done) {
    const promise = new Promise(function(resolve, reject) {
      setTimeout(function() {
        reject("Error");
      }, 1000);
    });

    promise.catch(function(error) {
      expect(error).toBe("Error");  // Promise ত্রুটি হিসেবে "Error" রিটার্ন করবে
      done();  // টেস্টটি শেষ হওয়ার জন্য done কল করতে হবে
    });
  });
});

এখানে:

  • done() ফাংশনটি ব্যবহার করা হয়েছে টেস্টের সমাপ্তি চিহ্নিত করতে। এটি নির্দেশ করে যে অ্যাসিঙ্ক্রোনাস অপারেশনটি শেষ হয়ে গেছে এবং টেস্টটি পাস/ফেইল হয়েছে।
  • প্রথম টেস্টে Promise সফলভাবে "Success" রিটার্ন করবে এবং দ্বিতীয় টেস্টে এটি "Error" রিটার্ন করবে।

Async/Await ব্যবহার করে টেস্ট করা

JasmineJS-এ async এবং await ব্যবহার করে অ্যাসিঙ্ক্রোনাস কোড টেস্ট করা আরও সহজ হয়ে যায়। এটি কোডকে আরও পরিষ্কার এবং পড়তে সহজ করে তোলে, কারণ এখানে done() কল করার প্রয়োজন হয় না এবং আপনি অপেক্ষা করতে পারেন যেকোনো অ্যাসিঙ্ক্রোনাস অপারেশনের ফলাফলের জন্য।

সঠিক ব্যবহার:

describe("Testing Async/Await", function() {
  it("should resolve the promise correctly", async function() {
    const result = await new Promise(function(resolve, reject) {
      setTimeout(function() {
        resolve("Success");
      }, 1000);
    });

    expect(result).toBe("Success");  // Promise সফলভাবে "Success" রিটার্ন করবে
  });

  it("should reject the promise", async function() {
    try {
      await new Promise(function(resolve, reject) {
        setTimeout(function() {
          reject("Error");
        }, 1000);
      });
    } catch (error) {
      expect(error).toBe("Error");  // Promise ত্রুটি হিসেবে "Error" রিটার্ন করবে
    }
  });
});

এখানে:

  • async ফাংশনটি নির্দেশ করে যে এটি অ্যাসিঙ্ক্রোনাস, এবং await এর মাধ্যমে আপনি Promise রেজাল্টের জন্য অপেক্ষা করেন।
  • প্রথম টেস্টে Promise সফলভাবে "Success" রিটার্ন করবে এবং দ্বিতীয় টেস্টে এটি "Error" রিটার্ন করবে।
  • await ব্যবহারের ফলে done() কল করার প্রয়োজন নেই, টেস্টটি স্বয়ংক্রিয়ভাবে শেষ হয়ে যাবে।

Promise এবং Async/Await এর মধ্যে পার্থক্য

  • Promises: Promise ভিত্তিক টেস্টিং-এ done() ফাংশন ব্যবহার করা হয়, যা অ্যাসিঙ্ক্রোনাস কোড সম্পন্ন হওয়া সিগন্যাল দেয়। এটি ঐতিহ্যবাহী পদ্ধতি, যেখানে অ্যাসিঙ্ক্রোনাস অপারেশন সম্পন্ন হলে done() কল করা হয়।
  • Async/Await: async এবং await কোডের লেখার পদ্ধতিকে আরও সোজা এবং সুসংগঠিত করে তোলে। এখানে আপনি Promise এর ফলাফলের জন্য সরাসরি অপেক্ষা করতে পারেন এবং done() কলের প্রয়োজন হয় না।

Promise এবং Async/Await এর একত্রিত ব্যবহার

আপনি চাইলে Promise এবং async/await একই টেস্টে একত্রে ব্যবহার করতে পারেন। তবে এটি সঠিকভাবে ব্যাবহার করার সময় বুঝে করা উচিত।

উদাহরণ:

describe("Async/Await with Promises", function() {
  it("should resolve promise using async/await", async function() {
    const result = await new Promise(function(resolve) {
      setTimeout(function() {
        resolve("Resolved");
      }, 500);
    });

    expect(result).toBe("Resolved");  // Promise সফলভাবে "Resolved" রিটার্ন করবে
  });
});

এখানে:

  • Promise ব্যবহৃত হয়েছে async/await পদ্ধতির সঙ্গে মিলিয়ে টেস্টে, ফলে কোডটি আরো পরিষ্কার এবং পড়তে সহজ হয়েছে।

সারাংশ

JasmineJS-এ Promises এবং Async/Await ব্যবহার করে অ্যাসিঙ্ক্রোনাস কোড টেস্ট করা অনেক সহজ এবং দক্ষ।

  • Promises ব্যবহারে আপনি done() ফাংশন ব্যবহার করে টেস্ট শেষ হওয়ার সিগন্যাল দিতে পারেন।
  • Async/Await ব্যবহারে কোডটি আরও পরিষ্কার হয়ে ওঠে, এবং আপনাকে done() কল করতে হয় না, কারণ আপনি সরাসরি Promise রেজাল্টের জন্য অপেক্ষা করেন।

এগুলি অ্যাসিঙ্ক্রোনাস অপারেশনগুলির টেস্টিং সহজতর করে এবং আপনার কোডকে আরও শক্তিশালী ও নির্ভরযোগ্য করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...