JasmineJS এ টেস্ট লেখার সময় describe() এবং it() ব্লক দুটি মৌলিক উপাদান। এগুলোর মাধ্যমে আপনি আপনার টেস্ট কেসগুলোকে সংগঠিত করতে পারেন এবং প্রতিটি টেস্টের আচরণ বা ফলাফল বর্ণনা করতে পারেন। এই দুটি ব্লক কিভাবে কাজ করে তা বিস্তারিতভাবে নিচে ব্যাখ্যা করা হলো।
describe() ব্লক
describe() ব্লকটি একটি টেস্টের গোষ্ঠী বা ফিচার বর্ণনা করে। এটি সাধারণত একটি নির্দিষ্ট ফাংশন, মডিউল বা ফিচারের পরীক্ষা করার জন্য ব্যবহৃত হয়। এর মধ্যে আপনি একাধিক it() ব্লক রাখতে পারেন, যা আলাদা আলাদা টেস্ট কেস।
describe() ব্লকের কাঠামো:
describe("Function/Feature Name", function() {
// এখানে এক বা একাধিক it() ব্লক থাকবে
});
- ফাংশন বা ফিচারের নাম: আপনি এখানে যেটি পরীক্ষা করতে চান সেটি উল্লেখ করবেন, যেমন ফাংশন, মডিউল বা কোডের কোনো অংশ।
- বর্ণনা:
describe()ব্লকের ভিতরে আপনার টেস্ট কেসগুলোর বিষয়ে সংক্ষিপ্ত বর্ণনা থাকতে পারে।
উদাহরণ:
describe("sum function", function() {
// এই describe ব্লকের মধ্যে sum ফাংশনের পরীক্ষা করা হবে
});
এখানে, describe() ব্লকটি sum function এর জন্য একটি টেস্ট গোষ্ঠী তৈরি করেছে। এর মধ্যে একাধিক it() ব্লক থাকতে পারে, যেখানে আলাদা আলাদা টেস্ট কেস থাকবে।
it() ব্লক
it() ব্লকটি একটি নির্দিষ্ট টেস্ট কেস বর্ণনা করে। এটি যেকোনো নির্দিষ্ট আচরণ বা কার্যকারিতা পরীক্ষা করে। সাধারণত it() এর মধ্যে আপনি যা যাচাই করতে চান তা লিখবেন।
it() ব্লকের কাঠামো:
it("should perform a specific behavior", function() {
// টেস্ট কোড এখানে থাকবে
});
- বর্ণনা: এখানে আপনি টেস্ট কেসটি কী করছে তা বর্ণনা করবেন। এটি সাধারণত একটি প্রত্যাশিত আচরণ বা ফলাফল বর্ণনা করে, যেমন “এই ফাংশন দুটি সংখ্যা যোগ করবে।”
উদাহরণ:
describe("sum function", function() {
it("should add two numbers correctly", function() {
const sum = 2 + 3;
expect(sum).toBe(5); // এখানে ২ এবং ৩ যোগ করলে ফলাফল ৫ হবে
});
});
এখানে:
describe()ব্লকটিsum functionপরীক্ষা করছে।it()ব্লকটি পরীক্ষা করছে যে ২ এবং ৩ যোগ করলে ফলাফল ৫ হবে কিনা।
describe() এবং it() এর সম্পর্ক
describe()ব্লকটি এক বা একাধিকit()ব্লক ধারণ করে।describe()ব্লকটি টেস্টের গোষ্ঠী বা ফিচার বর্ণনা করে, যেখানেit()ব্লকগুলো নির্দিষ্ট টেস্ট কেসগুলো বর্ণনা করে।
উদাহরণ:
describe("multiply function", function() {
it("should multiply two positive numbers correctly", function() {
const result = 2 * 3;
expect(result).toBe(6);
});
it("should return a negative number if one number is negative", function() {
const result = -2 * 3;
expect(result).toBe(-6);
});
});
এখানে:
- প্রথম
it()ব্লকটি যাচাই করছে যে দুটি ধনাত্মক সংখ্যা গুণ করলে ফলাফল সঠিক হবে। - দ্বিতীয়
it()ব্লকটি যাচাই করছে যে একটি ঋণাত্মক সংখ্যা গুণ করলে ফলাফল ঋণাত্মক হবে।
beforeEach() এবং afterEach() এর সাথে ব্যবহার
describe() ব্লকটির সাথে আপনি beforeEach() এবং afterEach() ব্যবহার করতে পারেন, যা প্রতিটি টেস্ট কেসের আগে বা পরে কোড এক্সিকিউট করে। এটি বিশেষভাবে উপকারী যখন আপনি কিছু কমন সেটআপ বা টিয়ারডাউন করতে চান।
উদাহরণ:
describe("calculator", function() {
let calc;
beforeEach(function() {
calc = new Calculator(); // প্রতিটি টেস্টের আগে নতুন একটি Calculator তৈরি হবে
});
it("should add two numbers correctly", function() {
expect(calc.add(2, 3)).toBe(5);
});
it("should subtract two numbers correctly", function() {
expect(calc.subtract(5, 3)).toBe(2);
});
afterEach(function() {
// প্রতিটি টেস্টের পরে কিছু কোড এক্সিকিউট হতে পারে
});
});
এখানে:
beforeEach(): এটি প্রতিটি টেস্ট কেসের আগেCalculatorএর একটি নতুন ইনস্ট্যান্স তৈরি করছে।it(): প্রতিটিit()ব্লক একটি নির্দিষ্ট ফাংশন বা আচরণ পরীক্ষা করছে।
সারাংশ
describe(): এটি টেস্টের একটি গোষ্ঠী বা ফিচার বর্ণনা করে। এটি একটি বড় টেস্ট সেট বা মডিউলকে বিভিন্ন ছোট ছোট টেস্ট কেসে ভাগ করতে সহায়তা করে।it(): এটি একটি নির্দিষ্ট টেস্ট কেস বর্ণনা করে। এখানে আপনি যা পরীক্ষা করতে চান তা উল্লেখ করবেন, যেমন একটি নির্দিষ্ট আচরণ বা আউটপুট।
এই দুটি ফাংশন আপনাকে পরিষ্কারভাবে টেস্ট কেসগুলো সংগঠিত করতে সহায়তা করে এবং টেস্টিং প্রক্রিয়াকে আরো বুঝতে সহজ করে তোলে।