JasmineJS এর Matchers হল সেই ফাংশনগুলো যা ব্যবহার করে আপনি আপনার টেস্ট কেসে বিভিন্ন অ্যাসারশন (assertion) করতে পারেন। Matchers গুলি আপনাকে যাচাই করার সুবিধা দেয় যে একটি বিশেষ মান বা অবস্থা আপনার প্রত্যাশা অনুযায়ী আছে কি না। JasmineJS বিভিন্ন ধরনের Matchers প্রদান করে, যার মধ্যে কিছু সাধারণ Matchers হলো: toBe(), toEqual(), toBeTruthy(), toBeFalsy(), toContain() ইত্যাদি।
Matchers এর প্রাথমিক ধারণা
Matchers হল Jasmine এর মূল অংশ, যা expect() ফাংশনের সাথে ব্যবহার করা হয়। expect() ফাংশনটি সেই মান বা অবস্থা উল্লেখ করে যা আপনি পরীক্ষা করতে চান, এবং Matcher ফাংশনটি সেই মানটির সাথে তুলনা করে।
Matchers এর সাধারণ গঠন:
expect(value).matcher(expectedValue);
এখানে:
value: এটি সেই মান যেটি আপনি পরীক্ষা করতে চান।matcher: এটি একটি Matcher ফাংশন, যেমনtoBe(),toEqual(), ইত্যাদি।expectedValue: এটি সেই মান যেটি আপনার প্রত্যাশা।
প্রধান Matchers এবং তাদের ব্যবহার
1. toBe()
toBe() Matcher সঠিক মানের তুলনা করতে ব্যবহৃত হয়। এটি === (strict equality) চেক করে মান এবং ধরনের (type) তুলনা করে।
describe("toBe matcher", function() {
it("should check if two values are strictly equal", function() {
const sum = 2 + 3;
expect(sum).toBe(5); // ২ + ৩ এর ফলাফল ৫ হওয়া উচিত
});
});
এখানে toBe() ফাংশনটি ২ + ৩ এর যোগফল ৫ এর সাথে তুলনা করছে।
2. toEqual()
toEqual() Matcher দুটি মানের সমতা পরীক্ষা করে। এটি মানের সাথে সাথে অবজেক্টের বৈশিষ্ট্যগুলোও পরীক্ষা করে। সাধারণত অবজেক্ট বা অ্যারে তুলনা করার জন্য toEqual() ব্যবহার করা হয়।
describe("toEqual matcher", function() {
it("should check if two objects or arrays are equal", function() {
const obj1 = { name: "Alice", age: 25 };
const obj2 = { name: "Alice", age: 25 };
expect(obj1).toEqual(obj2); // obj1 এবং obj2 সমান হওয়া উচিত
});
});
এখানে toEqual() ফাংশনটি দুটি অবজেক্টের সমতা যাচাই করছে।
3. toBeTruthy()
toBeTruthy() Matcher একটি মানকে সত্য (truthy) হিসেবে পরীক্ষা করে। JavaScript-এ truthy মান হল যে কোন মান যা boolean context এ true হিসেবে কাজ করে (যেমন ১, একটি অবজেক্ট, বা একটি non-empty স্ট্রিং)।
describe("toBeTruthy matcher", function() {
it("should check if the value is truthy", function() {
const value = "Hello";
expect(value).toBeTruthy(); // "Hello" একটি truthy মান
});
});
এখানে toBeTruthy() ফাংশনটি যাচাই করছে যে "Hello" একটি truthy মান।
4. toBeFalsy()
toBeFalsy() Matcher একটি মানকে মিথ্যা (falsy) হিসেবে পরীক্ষা করে। JavaScript-এ falsy মান হল যে কোন মান যা boolean context এ false হিসেবে কাজ করে (যেমন false, null, undefined, 0, NaN, বা empty string "")।
describe("toBeFalsy matcher", function() {
it("should check if the value is falsy", function() {
const value = 0;
expect(value).toBeFalsy(); // 0 একটি falsy মান
});
});
এখানে toBeFalsy() ফাংশনটি যাচাই করছে যে 0 একটি falsy মান।
5. toContain()
toContain() Matcher ব্যবহার করা হয় যখন আপনি কোন অ্যারে বা স্ট্রিংয়ে কিছু খুঁজতে চান। এটি পরীক্ষা করে যে নির্দিষ্ট মানটি অ্যারে বা স্ট্রিংয়ের মধ্যে আছে কিনা।
describe("toContain matcher", function() {
it("should check if an array contains a value", function() {
const fruits = ["apple", "banana", "orange"];
expect(fruits).toContain("banana"); // fruits অ্যারেতে "banana" থাকতে হবে
});
});
এখানে toContain() ফাংশনটি যাচাই করছে যে fruits অ্যারেতে "banana" উপাদানটি আছে কিনা।
6. toBeDefined()
toBeDefined() Matcher একটি মানকে পরীক্ষা করে যে এটি undefined নয়।
describe("toBeDefined matcher", function() {
it("should check if a value is defined", function() {
const value = "Hello";
expect(value).toBeDefined(); // value অবশ্যই defined (undefined নয়)
});
});
এখানে toBeDefined() ফাংশনটি যাচাই করছে যে value কোনভাবে undefined নয়।
7. toBeNull()
toBeNull() Matcher একটি মানকে পরীক্ষা করে যে এটি null কিনা।
describe("toBeNull matcher", function() {
it("should check if a value is null", function() {
const value = null;
expect(value).toBeNull(); // value এর মান অবশ্যই null হতে হবে
});
});
এখানে toBeNull() ফাংশনটি যাচাই করছে যে value এর মান null।
8. toMatch()
toMatch() Matcher একটি স্ট্রিংকে রেগুলার এক্সপ্রেশন (RegEx) এর সাথে মেলানোর জন্য ব্যবহৃত হয়।
describe("toMatch matcher", function() {
it("should check if the string matches a regular expression", function() {
const str = "Hello Jasmine!";
expect(str).toMatch(/Jasmine/); // str এর মধ্যে "Jasmine" থাকা উচিত
});
});
এখানে toMatch() ফাংশনটি যাচাই করছে যে str স্ট্রিংয়ে "Jasmine" শব্দটি রয়েছে কিনা।
সারাংশ
JasmineJS এর Matchers আপনার টেস্ট কেসে বিভিন্ন অ্যাসারশন বা যাচাই করার পদ্ধতি প্রদান করে। এখানে কিছু প্রধান Matcher ছিল:
toBe(): সঠিক মানের তুলনা (strict equality)।toEqual(): মানের সমতা, বিশেষ করে অবজেক্ট বা অ্যারে তুলনা করার জন্য।toBeTruthy()/toBeFalsy(): truthy বা falsy মান যাচাই।toContain(): অ্যারে বা স্ট্রিংয়ে কোনো মান রয়েছে কিনা তা যাচাই।toBeDefined(): কোনো মানundefinedনয় কিনা তা যাচাই।toBeNull(): কোনো মানnullকিনা তা যাচাই।toMatch(): রেগুলার এক্সপ্রেশন দিয়ে স্ট্রিংয়ের মেলা পরীক্ষা।
JasmineJS এ matchers হল এমন ফাংশন যা দিয়ে আপনি টেস্টের ফলাফল যাচাই করেন। এটি expect() ফাংশনের সাথে ব্যবহার করা হয়, যাতে আপনি আপনার কোডের প্রত্যাশিত আচরণ বা ফলাফল নিশ্চিত করতে পারেন। JasmineJS এর কিছু বিল্ট-ইন matcher রয়েছে যা আপনি সাধারণত টেস্ট লেখার সময় ব্যবহার করবেন। এই matchers গুলো বিভিন্ন ধরনের অ্যাসারশন বা চেকিং করার জন্য ব্যবহৃত হয়, যেমন মান, অবস্থা, অবজেক্ট ইত্যাদি।
প্রধান Built-in Matchers
JasmineJS এ কিছু সাধারণ এবং গুরুত্বপূর্ণ built-in matchers নিচে উল্লেখ করা হলো:
toBe()
toBe() matcher ব্যবহার করা হয় যখন আপনি দুটি মানের মধ্যে সঠিক সমতা পরীক্ষা করতে চান। এটি strict equality (===) চেক করে।
উদাহরণ:
const result = 2 + 3;
expect(result).toBe(5); // ২ এবং ৩ যোগ করলে ফলাফল ৫ হবে
এখানে, toBe(5) যাচাই করছে যে result আসলেই ৫ কিনা।
toEqual()
toEqual() matcher সাধারণত অবজেক্ট বা অ্যারের মধ্যে গভীর সমতা পরীক্ষা করতে ব্যবহৃত হয়। এটি deep equality চেক করে, মানে যদি দুটি অবজেক্ট বা অ্যারে সমান ডাটা ধারণ করে তবে তা true রিটার্ন করবে।
উদাহরণ:
const object1 = { name: 'Alice', age: 25 };
const object2 = { name: 'Alice', age: 25 };
expect(object1).toEqual(object2); // দুটি অবজেক্টের মান সমান হলে true হবে
এখানে, toEqual() matcher দুটি অবজেক্টের গঠন এবং মান তুলনা করে। যদি তাদের মান এবং গঠন সমান হয়, তাহলে এটি পাস করবে।
toBeTruthy() এবং toBeFalsy()
toBeTruthy() এবং toBeFalsy() matcher গুলো মানের truthiness এবং falsiness পরীক্ষা করতে ব্যবহৃত হয়।
toBeTruthy(): এটি যাচাই করে যে মানটি সত্য (truthy) কিনা, অর্থাৎ, কোনো মান যদিfalse,0,"",null,undefined, বাNaNনা হয় তাহলে তাtruthyহিসেবে গণ্য হবে।toBeFalsy(): এটি যাচাই করে যে মানটি মিথ্যা (falsy) কিনা, অর্থাৎ, যদি মানটিfalse,0,"",null,undefined, বাNaNহয় তবে এটিfalsyহবে।
উদাহরণ:
const value = 1;
expect(value).toBeTruthy(); // এটি true হবে কারণ ১ একটি truthy মান
const empty = "";
expect(empty).toBeFalsy(); // এটি true হবে কারণ "" একটি falsy মান
toContain()
toContain() matcher ব্যবহার করা হয় যখন আপনি একটি অ্যারে বা স্ট্রিংয়ের মধ্যে কোনো নির্দিষ্ট মান উপস্থিত কিনা তা পরীক্ষা করতে চান।
উদাহরণ:
const fruits = ["apple", "banana", "mango"];
expect(fruits).toContain("banana"); // অ্যারে-তে 'banana' থাকবে কিনা পরীক্ষা করছে
এখানে, toContain("banana") যাচাই করছে যে fruits অ্যারে-তে "banana" আছে কিনা।
toBeDefined() এবং toBeUndefined()
toBeDefined() এবং toBeUndefined() matcher গুলো পরিবর্তনশীলের মানের উপস্থিতি বা অনুপস্থিতি পরীক্ষা করতে ব্যবহৃত হয়।
toBeDefined(): এটি যাচাই করে যে একটি ভেরিয়েবল সংজ্ঞায়িত (defined) আছে কিনা।toBeUndefined(): এটি যাচাই করে যে একটি ভেরিয়েবল অপরিবর্তিত বা undefined আছে কিনা।
উদাহরণ:
let user;
expect(user).toBeUndefined(); // user ভেরিয়েবলটি undefined কিনা পরীক্ষা করছে
user = "Alice";
expect(user).toBeDefined(); // user এখন defined, তাই এটি true হবে
toBeNull()
toBeNull() matcher ব্যবহার করা হয় একটি ভেরিয়েবলের মান null কিনা পরীক্ষা করতে।
উদাহরণ:
const user = null;
expect(user).toBeNull(); // এটি true হবে কারণ user এর মান null
এখানে, toBeNull() যাচাই করছে যে user এর মান null কিনা।
toThrow() এবং toThrowError()
toThrow() এবং toThrowError() matcher গুলো ব্যবহার করা হয় যাচাই করার জন্য যে কোনো ফাংশন এক্সেপশন বা এরর থ্রো করছে কিনা।
toThrow(): এটি পরীক্ষা করে যে ফাংশনটি কোনো এক্সেপশন থ্রো করছে কিনা।toThrowError(): এটি আরো নির্দিষ্ট ভাবে যে কোন নির্দিষ্ট এরর টাইপ বা মেসেজ থ্রো করছে কিনা, তা পরীক্ষা করে।
উদাহরণ:
function throwError() {
throw new Error("Something went wrong");
}
expect(throwError).toThrowError("Something went wrong"); // এটি true হবে
এখানে, toThrowError() যাচাই করছে যে throwError() ফাংশনটি "Something went wrong" মেসেজ সহ এরর থ্রো করছে।
toMatch()
toMatch() matcher ব্যবহার করা হয় স্ট্রিংগুলোর মধ্যে নির্দিষ্ট প্যাটার্ন বা রেগুলার এক্সপ্রেশন ম্যাচ করতে।
উদাহরণ:
const message = "Hello, Jasmine!";
expect(message).toMatch(/Jasmine/); // এটি true হবে কারণ 'message' স্ট্রিংয়ে 'Jasmine' রয়েছে
এখানে, toMatch() যাচাই করছে যে "Hello, Jasmine!" স্ট্রিংটি "Jasmine" প্যাটার্নটি ধারণ করে কিনা।
সারাংশ
JasmineJS এর built-in matchers টেস্টিং প্রক্রিয়াকে আরও সহজ এবং কার্যকর করে তোলে। আপনি বিভিন্ন ধরনের matchers ব্যবহার করে আপনার টেস্টের ফলাফল যাচাই করতে পারেন, যেমন:
toBe(): মানের সঠিক সমতা পরীক্ষা।toEqual(): গভীর সমতা পরীক্ষা (objects/arrays)।toBeTruthy()/toBeFalsy(): সত্য/মিথ্যা মান যাচাই।toContain(): অ্যারে বা স্ট্রিংয়ে কিছু রয়েছে কিনা পরীক্ষা।toThrow()/toThrowError(): এরর বা এক্সেপশন থ্রো করছে কিনা পরীক্ষা।
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 এর ব্যাখ্যা
jasmine.addMatchers(): এই ফাংশনটি Jasmine এর matcher গুলোর মধ্যে নতুন matcher যুক্ত করতে ব্যবহৃত হয়। এটি একটি অবজেক্ট গ্রহণ করে, যেখানে matcher এর নাম এবং তার কার্যকলাপ (এবংcompareফাংশন) উল্লেখ থাকে।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 এর সুবিধা
- কাস্টমাইজেশন: আপনার টেস্টের জন্য নির্দিষ্ট চেক করতে চাইলে custom matcher তৈরি করা সুবিধাজনক।
- পুনঃব্যবহারযোগ্যতা: একবার তৈরি করা matcher অন্য কোথাও পুনঃব্যবহার করা যেতে পারে, যা কোডের পুনরাবৃত্তি কমায়।
- পঠনযোগ্যতা:
expect()এর মাধ্যমে custom matcher ব্যবহার করলে টেস্ট কেসগুলো আরও পরিষ্কার এবং বোধগম্য হয়।
সারাংশ
JasmineJS এর custom matchers তৈরি করা আপনাকে টেস্টিং প্রক্রিয়ায় আরও নিয়ন্ত্রণ এবং কাস্টমাইজেশন দেয়। jasmine.addMatchers() এর মাধ্যমে আপনি আপনার নিজস্ব matchers তৈরি করতে পারেন যা বিশেষ পরিস্থিতি বা প্রয়োজনীয়তা পূরণ করে। এর ফলে, আপনার টেস্টগুলো আরও শক্তিশালী, পরিষ্কার এবং পুনরাবৃত্তি থেকে মুক্ত হয়।
JasmineJS এর matchers এমন ফাংশন যা আপনাকে আপনার টেস্টের মধ্যে অ্যাসারশন (assertion) করতে সাহায্য করে। অ্যাসারশন এর মাধ্যমে আপনি পরীক্ষিত মানকে প্রত্যাশিত মানের সাথে তুলনা করতে পারেন। JasmineJS এ বিভিন্ন ধরনের matchers রয়েছে, যা বিভিন্ন ধরণের চেক করতে ব্যবহৃত হয়, যেমন সঠিক মান, অবজেক্টের গঠন, এক্সেপশন এবং আরও অনেক কিছু।
Common Matchers
toBe()
toBe() matcherটি ব্যবহার করা হয় যখন আপনি মানের সঠিকতা পরীক্ষা করতে চান। এটি গড়মান (primitive) টাইপের মানের জন্য উপযুক্ত, যেমন স্ট্রিং, নাম্বার, বুলিয়ান ইত্যাদি। toBe() ব্যবহার করলে মানটি তুলনা করা হবে ঠিক সেই ধরনের ও মানের সাথে।
ব্যবহার:
it("should check for exact equality", function() {
const value = 5;
expect(value).toBe(5); // এখানে 'value' এবং ৫ মানে একেবারে সমান
});
এখানে value এবং 5 একই ধরণের এবং সমান হওয়ায় টেস্টটি পাস করবে।
toEqual()
toEqual() matcherটি ব্যবহৃত হয় যখন আপনি অবজেক্ট বা অ্যারের মধ্যে সমতা যাচাই করতে চান। toEqual() হল গভীর সমতা পরীক্ষা, অর্থাৎ এটি অবজেক্টের ভেতরের কন্টেন্টগুলিও তুলনা করে।
ব্যবহার:
it("should check for deep equality", function() {
const obj1 = { a: 1, b: 2 };
const obj2 = { a: 1, b: 2 };
expect(obj1).toEqual(obj2); // এখানে obj1 এবং obj2 এর কন্টেন্ট সমান
});
এখানে obj1 এবং obj2 এর ভেতরের কন্টেন্ট একই হওয়ায় toEqual() matcher টি তাদের সমান বলে গণ্য করবে।
toContain()
toContain() matcherটি ব্যবহার করা হয় যখন আপনি একটি অ্যারে বা স্ট্রিং এ কোনো নির্দিষ্ট মান বা উপাদান আছে কিনা তা পরীক্ষা করতে চান।
ব্যবহার:
it("should check if an array contains a value", function() {
const fruits = ['apple', 'banana', 'cherry'];
expect(fruits).toContain('banana'); // এখানে 'banana' অ্যারে তে আছে
});
এখানে fruits অ্যারে তে 'banana' আছে, তাই টেস্টটি পাস করবে।
toThrow()
toThrow() matcherটি ব্যবহার করা হয় যখন আপনি একটি ফাংশন রান করানোর পর কোন exception বা এরর ঘটছে কিনা তা পরীক্ষা করতে চান।
ব্যবহার:
it("should throw an error", function() {
function throwError() {
throw new Error("Something went wrong");
}
expect(throwError).toThrow(new Error("Something went wrong")); // এখানে একটি এরর ফেলা হবে
});
এখানে throwError ফাংশনটি একটি Error ফেলে এবং toThrow() matcher এর মাধ্যমে এররটি পরীক্ষিত হয়।
toBeTruthy() এবং toBeFalsy()
toBeTruthy() এবং toBeFalsy() matchers দুটি বিভিন্ন মান যাচাই করে। toBeTruthy() মানে এমন কিছু যা সত্য (truthy) হিসেবে বিবেচিত হয় এবং toBeFalsy() মানে এমন কিছু যা মিথ্যা (falsy) হিসেবে বিবেচিত হয়।
ব্যবহার:
it("should check truthy and falsy values", function() {
expect(true).toBeTruthy(); // 'true' সত্যি মান হিসেবে গণ্য হবে
expect(false).toBeFalsy(); // 'false' মিথ্যা মান হিসেবে গণ্য হবে
});
এখানে true কে সত্যি (truthy) এবং false কে মিথ্যা (falsy) হিসেবে গণ্য করা হয়েছে।
toBeGreaterThan() এবং toBeLessThan()
এই matchers দুটি ব্যবহার করা হয় যখন আপনি কোনো সংখ্যার মানের তুলনা করতে চান। toBeGreaterThan() চেক করে যে কোনো মান নির্দিষ্ট সংখ্যার চেয়ে বড় কিনা এবং toBeLessThan() চেক করে যে কোনো মান নির্দিষ্ট সংখ্যার চেয়ে ছোট কিনা।
ব্যবহার:
it("should check greater than and less than", function() {
expect(10).toBeGreaterThan(5); // ১০ হলো ৫ এর চেয়ে বড়
expect(3).toBeLessThan(5); // ৩ হলো ৫ এর চেয়ে ছোট
});
এখানে 10 এর চেয়ে 5 ছোট এবং 3 এর চেয়ে 5 বড় হওয়ায় টেস্ট দুটি পাস করবে।
সারাংশ
JasmineJS এর matchers বিভিন্ন ধরণের মান পরীক্ষা করার জন্য ব্যবহৃত হয়। কিছু সাধারণ matchers:
toBe(): গড়মান মানের সঠিকতা পরীক্ষা করে।toEqual(): গভীর সমতা পরীক্ষা করে, যেমন অবজেক্ট বা অ্যারের মধ্যে সমতা।toContain(): অ্যারে বা স্ট্রিং এ নির্দিষ্ট মান বা উপাদান পরীক্ষা করে।toThrow(): কোনো ফাংশন এরর বা এক্সেপশন ফেলে কিনা পরীক্ষা করে।toBeTruthy()এবংtoBeFalsy(): সত্যি বা মিথ্যা মান পরীক্ষা করে।toBeGreaterThan()এবংtoBeLessThan(): সংখ্যা তুলনা করে বড় বা ছোট কিনা।
JasmineJS-এ negative matchers ব্যবহার করে আমরা পরীক্ষিত মানের বিপরীত ফলাফল যাচাই করতে পারি। সাধারণত, toBe এবং toEqual matchers দিয়ে মানের সঠিকতা যাচাই করা হয়, কিন্তু যখন আপনি নিশ্চিত হতে চান যে, একটি মান প্রত্যাশিত মানের সমান নয়, তখন not কিওয়ার্ড ব্যবহার করতে পারেন।
Negative matchers ব্যবহার করার সময়, আপনি একটি মানের সমান না হওয়ার পরিস্থিতি যাচাই করেন।
not.toBe এর ব্যবহার
not.toBe matcher ব্যবহার করে আপনি পরীক্ষা করতে পারেন যে দুটি মান সমান নয়।
সঠিক ব্যবহার:
describe("Testing not.toBe", function() {
it("should not equal to the given value", function() {
const result = 5 + 3;
expect(result).not.toBe(10); // ৫ + ৩ এর ফলাফল ১০ নয়
});
});
এখানে:
expect(result).not.toBe(10);—এই কোডটি পরীক্ষা করে যেresultএর মান ১০ নয়।- ফলস্বরূপ, ৫ + ৩ এর মান ৮ হবে, যা ১০ এর সমান নয়, তাই টেস্টটি পাস করবে।
not.toEqual এর ব্যবহার
not.toEqual ব্যবহার করে আপনি পরীক্ষা করতে পারেন যে দুটি অবজেক্ট বা মান সমান নয়। এটি মূলত জটিল ডেটা স্ট্রাকচারের (যেমন অ্যারে বা অবজেক্ট) ক্ষেত্রে ব্যবহৃত হয়।
সঠিক ব্যবহার:
describe("Testing not.toEqual", function() {
it("should not be equal to the given object", function() {
const obj1 = { name: "John", age: 30 };
const obj2 = { name: "Jane", age: 30 };
expect(obj1).not.toEqual(obj2); // obj1 এবং obj2 এর মান সমান নয়
});
});
এখানে:
expect(obj1).not.toEqual(obj2);—এটি পরীক্ষা করে যেobj1এবংobj2সমান নয়।- যদিও উভয় অবজেক্টের
ageএর মান ৩০, তাদেরnameভিন্ন (একটি "John" এবং অন্যটি "Jane")—এটিtoEqualদ্বারা সমান নয় বলে টেস্টটি পাস করবে।
not.toBe এবং not.toEqual এর পার্থক্য
toBe: এটি একে অপরের সাথে দুটি প্র primitive টাইপের মান (যেমন সংখ্যা, স্ট্রিং, বুলিয়ান) তুলনা করতে ব্যবহার হয়। এটি স্ট্রিক্ট ইকুয়ালিটি (যেমন===) ব্যবহার করে মান যাচাই করে।উদাহরণ:
expect(5).not.toBe(6); // ৫ এবং ৬ সমান নয়toEqual: এটি দুটি অবজেক্ট বা অ্যারের মান তুলনা করতে ব্যবহৃত হয়, এবং এটি গুণগত মানের তুলনা করে, শর্তগুলো একই রকম হলেই এটি সমান হিসেবে বিবেচিত হয়।উদাহরণ:
expect([1, 2, 3]).not.toEqual([1, 2, 4]); // দুটি অ্যারের মান সমান নয়
Negative Matchers এর বাস্তব ব্যবহার
উদাহরণ ১: সঠিকতা যাচাই
describe("Testing negative matchers", function() {
it("should not return undefined", function() {
const result = 5 + 3;
expect(result).not.toBeUndefined(); // ৫ + ৩ এর ফলাফল undefined নয়
});
});
এখানে:
expect(result).not.toBeUndefined();—এটি যাচাই করে যেresultএর মানundefinedনয়।
উদাহরণ ২: ডেটা মডেল যাচাই
describe("Testing negative matchers with objects", function() {
it("should not be equal to the expected object", function() {
const expectedObj = { name: "Alice", age: 25 };
const actualObj = { name: "Bob", age: 25 };
expect(actualObj).not.toEqual(expectedObj); // নাম ভিন্ন হওয়ায় সমান নয়
});
});
এখানে:
expect(actualObj).not.toEqual(expectedObj);—এটি পরীক্ষা করে যেactualObjএবংexpectedObjসমান নয়। যদিওageসমান, কিন্তুnameভিন্ন হওয়ায় টেস্টটি পাস হবে।
সারাংশ
JasmineJS এ negative matchers ব্যবহার করা একটি শক্তিশালী কৌশল যা আপনাকে কোডের ফলাফলগুলোর বিপরীত পরিস্থিতি পরীক্ষা করতে সহায়তা করে।
not.toBe: এটি নিশ্চিত করে যে দুটি মান সমান নয়।not.toEqual: এটি নিশ্চিত করে যে দুটি অবজেক্ট বা অ্যারের মান সমান নয়।
Read more