JasmineJS টেস্টিং ফ্রেমওয়ার্কে Assertions এবং Matchers খুবই গুরুত্বপূর্ণ উপাদান। এগুলি টেস্ট কেসের ফলাফল যাচাই করতে ব্যবহৃত হয়। Jasmine এর expect() ফাংশন ব্যবহার করে আমরা Assertions তৈরি করি, এবং Matchers দ্বারা আমরা টেস্ট কেসে দেয়া মানের সাথে তুলনা করে যাচাই করি।
Assertions এবং Matchers কি?
- Assertion: এটি একটি বিবৃতি বা চেক যা নির্ধারণ করে যে কোনো শর্ত পূর্ণ হচ্ছে কি না। যদি শর্ত পূর্ণ হয়, তাহলে টেস্টটি পাস করবে; অন্যথায়, এটি ফেল হবে। Jasmine এ Assertions সাধারণত
expect()ফাংশনের মাধ্যমে করা হয়। - Matcher: এটি একটি বিশেষ ধরনের ফাংশন যা
expect()এর সাথে ব্যবহার করা হয়। Matchers মানের সাথে তুলনা করে এবং নিশ্চিত করে যে সেটি প্রত্যাশিত আচরণ করছে কি না। Jasmine এ অনেক ধরনের matcher রয়েছে, যেমনtoBe(),toEqual(),toBeTruthy(),toContain()ইত্যাদি।
expect() ফাংশন
JasmineJS এ Assertions তৈরি করতে expect() ফাংশন ব্যবহার করা হয়। এর মাধ্যমে আপনি একটি মান বা অবস্থা যাচাই করতে পারেন।
expect(actualValue).matcher(expectedValue);
এখানে:
actualValue: এটি হলো সেই মান বা অবস্থা যা আপনি যাচাই করতে চান।matcher: এটি হলো Matcher ফাংশন (যেমনtoBe(),toEqual(),toContain()ইত্যাদি) যা যাচাই করবে যেactualValueপ্রত্যাশিত মানের সাথে মেলে কিনা।expectedValue: এটি হলো আপনি যেটি প্রত্যাশা করছেন।
Matchers এর ধরণ
JasmineJS এ অনেক ধরনের matcher রয়েছে, যেগুলির মাধ্যমে আপনি বিভিন্ন ধরনের যাচাই করতে পারেন। কিছু সাধারণ matcher নিচে বর্ণনা করা হলো:
1. toBe()
toBe() ব্যবহার করে আপনি একটি মানের সঠিকতা পরীক্ষা করতে পারেন। এটি strict equality চেক করে, অর্থাৎ, এটি দুটি মানের টাইপও পরীক্ষা করে।
expect(2 + 3).toBe(5); // এটি পরীক্ষা করবে যে ২ এবং ৩ যোগ করলে ৫ হয় কিনা
এখানে:
toBe(5)চেক করবে যে ফলাফল5কিনা। এটি strict equality চেক করে, তাই2 + 3এর ফলাফল হতে হবে একেবারে5, কোনো রকম পরিবর্তন ছাড়াই।
2. toEqual()
toEqual() ব্যবহার করে আপনি অবজেক্ট বা অ্যারের মানের সমতা পরীক্ষা করতে পারেন। এটি deep equality চেক করে, তাই এটি সাধারণত জটিল ডেটা টাইপের জন্য ব্যবহৃত হয়।
const obj1 = { a: 1, b: 2 };
const obj2 = { a: 1, b: 2 };
expect(obj1).toEqual(obj2); // এটি পরীক্ষা করবে যে obj1 এবং obj2 এর মান সমান কিনা
এখানে:
toEqual()চেক করে যেobj1এবংobj2এর মধ্যে মানের সমতা রয়েছে, যদিও তাদের রেফারেন্স ভিন্ন হতে পারে।
3. toBeTruthy() এবং toBeFalsy()
toBeTruthy() এবং toBeFalsy() Matchers ব্যবহার করে আপনি কোনো মানের সত্য বা মিথ্যা অবস্থান পরীক্ষা করতে পারেন।
toBeTruthy()চেক করে যে মানটি truthy (যেমন, ১,"string",[1, 2]ইত্যাদি) কিনা।toBeFalsy()চেক করে যে মানটি falsy (যেমন,false,0,"",null,undefined) কিনা।
expect(true).toBeTruthy(); // এটি পাস হবে কারণ 'true' একটি truthy মান
expect(0).toBeFalsy(); // এটি পাস হবে কারণ '0' একটি falsy মান
4. toContain()
toContain() ব্যবহার করে আপনি যাচাই করতে পারেন যে একটি অ্যারে বা স্ট্রিং একটি নির্দিষ্ট উপাদান ধারণ করছে কি না।
const arr = [1, 2, 3, 4];
expect(arr).toContain(3); // এটি পরীক্ষা করবে যে অ্যারে '3' ধারণ করছে কিনা
expect("Hello").toContain("ell"); // এটি পরীক্ষা করবে যে স্ট্রিং 'ell' ধারণ করছে কিনা
5. toBeGreaterThan() এবং toBeLessThan()
toBeGreaterThan() এবং toBeLessThan() Matchers ব্যবহার করে আপনি সংখ্যার তুলনা করতে পারেন।
expect(5).toBeGreaterThan(3); // এটি পরীক্ষা করবে যে ৫, ৩ এর চেয়ে বড় কিনা
expect(2).toBeLessThan(10); // এটি পরীক্ষা করবে যে ২, ১০ এর চেয়ে ছোট কিনা
6. toThrow()
toThrow() ব্যবহার করে আপনি যাচাই করতে পারেন যে একটি ফাংশন কোনো ত্রুটি (error) ছুঁড়ছে কিনা।
function throwError() {
throw new Error("This is an error");
}
expect(throwError).toThrow(); // এটি পরীক্ষা করবে যে throwError ফাংশনটি কোনো ত্রুটি ছুঁড়ছে কিনা
Assertions এবং Matchers এর ব্যবহার উদাহরণ
describe("Mathematical operations", function() {
it("should add two numbers correctly", function() {
const sum = 2 + 3;
expect(sum).toBe(5); // পরীক্ষার জন্য 'toBe()' matcher
});
it("should return an object with same properties", function() {
const obj1 = { a: 1, b: 2 };
const obj2 = { a: 1, b: 2 };
expect(obj1).toEqual(obj2); // পরীক্ষার জন্য 'toEqual()' matcher
});
it("should return a truthy value", function() {
expect(1).toBeTruthy(); // পরীক্ষার জন্য 'toBeTruthy()' matcher
});
it("should contain a specific element", function() {
const arr = [1, 2, 3, 4];
expect(arr).toContain(3); // পরীক্ষার জন্য 'toContain()' matcher
});
it("should throw an error", function() {
function throwError() {
throw new Error("Error!");
}
expect(throwError).toThrow(); // পরীক্ষার জন্য 'toThrow()' matcher
});
});
সারাংশ
JasmineJS এ Assertions এবং Matchers টেস্টের ফলাফল যাচাই করার প্রধান উপায়। expect() ফাংশনের মাধ্যমে Assertions তৈরি করা হয় এবং Matchers (যেমন toBe(), toEqual(), toContain(), toThrow()) এর মাধ্যমে আপনি বিভিন্ন ধরনের তুলনা এবং যাচাই করতে পারেন। Jasmine এর Matchers এর মাধ্যমে আপনি সহজেই বিভিন্ন ধরনের মান যাচাই করতে পারবেন, যেমন সংখ্যা, অবজেক্ট, অ্যারে, বা ত্রুটি।
Read more