Web Development Custom Matchers তৈরি করা গাইড ও নোট

213

JasmineJS এর ডিফল্ট matchers যেমন toBe(), toEqual(), toContain() ইত্যাদি দিয়ে আপনি সাধারণ টেস্ট কেসগুলো পরীক্ষা করতে পারেন। তবে, কখনও কখনও আপনাকে এমন matchers তৈরি করতে হতে পারে যা আপনার প্রোজেক্টের বিশেষ প্রয়োজনীয়তা পূরণ করে। এই ধরনের matchers কে Custom Matchers বলা হয়। JasmineJS আপনাকে আপনার নিজস্ব matchers তৈরি করার সুযোগ দেয়, যা আপনার টেস্টিং প্রক্রিয়াকে আরও শক্তিশালী এবং নমনীয় করে।


Custom Matcher তৈরি করার প্রক্রিয়া

JasmineJS এ custom matcher তৈরি করতে jasmine.addMatchers() ফাংশন ব্যবহার করা হয়। এই ফাংশনটি আপনাকে নতুন matcher যুক্ত করার সুবিধা দেয়। Custom matcher তৈরি করার জন্য আপনাকে matcher এর একটি অবজেক্ট প্রদান করতে হবে, যেখানে matcher এর নাম এবং তার কার্যকারিতা নির্ধারণ করা থাকে।


Custom Matcher এর কাঠামো

beforeEach(function() {
  jasmine.addMatchers({
    toBeEven: function() {
      return {
        compare: function(actual) {
          const result = {};
          result.pass = actual % 2 === 0;
          if (result.pass) {
            result.message = actual + " is an even number";
          } else {
            result.message = actual + " is not an even number";
          }
          return result;
        }
      };
    }
  });
});

describe("Custom Matcher: toBeEven", function() {
  it("should check if a number is even", function() {
    expect(4).toBeEven();  // এটি সফল হবে
    expect(3).toBeEven();  // এটি ব্যর্থ হবে
  });
});

এখানে:

  • jasmine.addMatchers(): এই ফাংশনের মাধ্যমে আমরা আমাদের custom matcher যুক্ত করেছি।
  • toBeEven: আমাদের custom matcher এর নাম। এটি একটি সংখ্যার মান যাচাই করবে যে সেটি even (যুগল) কিনা।
  • compare(): এটি matcher এর মূল ফাংশন। এখানে আপনি পরীক্ষিত মান (actual) নিয়ে শর্তাবলী নির্ধারণ করবেন, এবং pass বা fail ফলাফল ফেরত দিবেন।

Custom Matcher এর ব্যাখ্যা

  1. jasmine.addMatchers(): এই ফাংশনটি Jasmine এর matcher গুলোর মধ্যে নতুন matcher যুক্ত করতে ব্যবহৃত হয়। এটি একটি অবজেক্ট গ্রহণ করে, যেখানে matcher এর নাম এবং তার কার্যকলাপ (এবং compare ফাংশন) উল্লেখ থাকে।
  2. compare(): এটি matcher এর মূল অংশ। এখানে আপনি যাচাই করতে চান এমন শর্তাবলী চেক করবেন। compare ফাংশনটি দুটি জিনিস ফিরিয়ে দেয়:
    • pass: যদি শর্তটি পূর্ণ হয়, তবে true ফিরিয়ে দেবে, অন্যথায় false
    • message: ফলস্বরূপ মেসেজ যা টেস্ট রিপোর্টে প্রদর্শিত হবে।

একাধিক Matcher তৈরি করা

আপনি একাধিক custom matcher তৈরি করতে পারেন। উদাহরণস্বরূপ, নিচে একটি matcher toBeOdd এবং একটি toBeEven তৈরি করা হয়েছে:

beforeEach(function() {
  jasmine.addMatchers({
    toBeEven: function() {
      return {
        compare: function(actual) {
          const result = {};
          result.pass = actual % 2 === 0;
          result.message = result.pass ? 
            actual + " is an even number" : 
            actual + " is not an even number";
          return result;
        }
      };
    },
    toBeOdd: function() {
      return {
        compare: function(actual) {
          const result = {};
          result.pass = actual % 2 !== 0;
          result.message = result.pass ? 
            actual + " is an odd number" : 
            actual + " is not an odd number";
          return result;
        }
      };
    }
  });
});

describe("Custom Matchers: toBeEven and toBeOdd", function() {
  it("should check if a number is even", function() {
    expect(4).toBeEven();   // এটা সফল হবে
    expect(5).toBeEven();   // এটা ব্যর্থ হবে
  });

  it("should check if a number is odd", function() {
    expect(3).toBeOdd();    // এটা সফল হবে
    expect(4).toBeOdd();    // এটা ব্যর্থ হবে
  });
});

এখানে:

  • toBeEven() এবং toBeOdd() দুইটি custom matcher তৈরি করা হয়েছে।
  • toBeEven() চেক করে যে সংখ্যা যুগল (even) কি না।
  • toBeOdd() চেক করে যে সংখ্যা বিজোড় (odd) কি না।

Custom Matcher এর সুবিধা

  1. কাস্টমাইজেশন: আপনার টেস্টের জন্য নির্দিষ্ট চেক করতে চাইলে custom matcher তৈরি করা সুবিধাজনক।
  2. পুনঃব্যবহারযোগ্যতা: একবার তৈরি করা matcher অন্য কোথাও পুনঃব্যবহার করা যেতে পারে, যা কোডের পুনরাবৃত্তি কমায়।
  3. পঠনযোগ্যতা: expect() এর মাধ্যমে custom matcher ব্যবহার করলে টেস্ট কেসগুলো আরও পরিষ্কার এবং বোধগম্য হয়।

সারাংশ

JasmineJS এর custom matchers তৈরি করা আপনাকে টেস্টিং প্রক্রিয়ায় আরও নিয়ন্ত্রণ এবং কাস্টমাইজেশন দেয়। jasmine.addMatchers() এর মাধ্যমে আপনি আপনার নিজস্ব matchers তৈরি করতে পারেন যা বিশেষ পরিস্থিতি বা প্রয়োজনীয়তা পূরণ করে। এর ফলে, আপনার টেস্টগুলো আরও শক্তিশালী, পরিষ্কার এবং পুনরাবৃত্তি থেকে মুক্ত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...