JasmineJS এ টেস্ট গঠন আরও আরও সুনির্দিষ্ট এবং কার্যকরী করতে nested describe() ব্লক এবং teardown ফাংশন ব্যবহৃত হয়। এগুলোর মাধ্যমে আপনি জটিল টেস্ট কেসগুলোকে আরো শ্রেণিবদ্ধভাবে সাজাতে এবং প্রতিটি টেস্টের পরে প্রয়োজনীয় পরিস্কার বা cleanup কার্যক্রম পরিচালনা করতে পারেন।
Nested describe() ব্লক
Nested describe() ব্লক ব্যবহার করে আপনি একটি describe() ব্লকের মধ্যে আরেকটি describe() ব্লক রাখতে পারেন। এটি আপনাকে টেস্ট কেসগুলোর মধ্যে সম্পর্ক তৈরি করতে এবং টেস্ট গোষ্ঠী গঠন করতে সাহায্য করে। সাধারণত একটি ফিচারের বিভিন্ন উপাংশ বা সাব-ফিচার পরীক্ষা করতে nested describe() ব্যবহার করা হয়।
উদাহরণ:
describe("Calculator", function() {
describe("Addition", function() {
it("should add two positive numbers correctly", function() {
const result = 2 + 3;
expect(result).toBe(5);
});
it("should return a negative number when adding two negative numbers", function() {
const result = -2 + -3;
expect(result).toBe(-5);
});
});
describe("Subtraction", function() {
it("should subtract two numbers correctly", function() {
const result = 5 - 3;
expect(result).toBe(2);
});
it("should return a negative result when subtracting a larger number from a smaller number", function() {
const result = 3 - 5;
expect(result).toBe(-2);
});
});
});
এখানে:
- Outer
describe(): পুরোCalculatorফিচারকে বর্ণনা করছে। - Inner
describe(): এর মধ্যেAdditionএবংSubtractionফিচারের জন্য আলাদা টেস্ট কেস রয়েছে।
Nested describe() ব্লকগুলো টেস্টের গঠন আরও পরিষ্কার এবং সুনির্দিষ্ট করে, যাতে আপনি আলাদা আলাদা ফিচার বা কার্যকারিতা পরীক্ষা করতে পারেন।
Teardown এবং Cleanup
JasmineJS এ Teardown হল একটি প্রক্রিয়া, যা টেস্ট কেসের পরে কিছু পরিস্কার বা cleanup কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। এটি afterEach() ফাংশনের মাধ্যমে করা হয়। afterEach() প্রতিটি টেস্ট কেসের পর স্বয়ংক্রিয়ভাবে রান হয় এবং যেখানে প্রয়োজন, সেখানে রিসোর্স বা অবস্থা পুনরায় সেট করতে বা মুক্ত করতে সহায়তা করে।
afterEach() ফাংশন
afterEach() ফাংশনটি প্রতিটি টেস্ট কেসের পর রান হয় এবং এটি টেস্টের পরে সম্পাদন করা পরিস্কার বা cleanup কাজগুলো করতে ব্যবহৃত হয়। এটি beforeEach() এর বিপরীত, যা টেস্টের আগে কোড এক্সিকিউট করে।
উদাহরণ:
describe("Calculator", function() {
let calc;
beforeEach(function() {
calc = new Calculator(); // প্রতিটি টেস্টের আগে নতুন একটি Calculator তৈরি হবে
});
it("should add two numbers correctly", function() {
const result = calc.add(2, 3);
expect(result).toBe(5);
});
it("should subtract two numbers correctly", function() {
const result = calc.subtract(5, 3);
expect(result).toBe(2);
});
afterEach(function() {
// প্রতিটি টেস্টের পরে রিসোর্স পরিস্কার বা প্রয়োজনীয় cleanup কার্যক্রম
console.log("Test completed, cleaning up...");
});
});
এখানে:
beforeEach(): টেস্টের আগেCalculatorক্লাসের একটি নতুন ইনস্ট্যান্স তৈরি করছে।afterEach(): প্রতিটি টেস্ট কেসের পরে পরিস্কার বা cleanup কার্যক্রম চালাচ্ছে। এখানে শুধু একটি লোগ বার্তা দেখানো হচ্ছে, তবে আপনি এখানে রিসোর্স মুক্তি বা অন্যান্য প্রয়োজনীয় কাজ করতে পারেন।
Nested describe() এর সাথে Teardown ব্যবহার
Nested describe() ব্লক এবং afterEach() ফাংশন একত্রে ব্যবহৃত হলে, আপনি প্রতিটি সাব-ফিচারের জন্য আলাদা টেস্ট কেস গঠন করতে পারেন এবং প্রতিটি টেস্টের পর আলাদা আলাদা পরিস্কার কার্যক্রম পরিচালনা করতে পারেন।
উদাহরণ:
describe("Calculator", function() {
let calc;
beforeEach(function() {
calc = new Calculator();
});
afterEach(function() {
console.log("Cleaning up after a test...");
});
describe("Addition", function() {
it("should add two positive numbers correctly", function() {
const result = calc.add(2, 3);
expect(result).toBe(5);
});
it("should return a negative number when adding two negative numbers", function() {
const result = calc.add(-2, -3);
expect(result).toBe(-5);
});
});
describe("Subtraction", function() {
it("should subtract two numbers correctly", function() {
const result = calc.subtract(5, 3);
expect(result).toBe(2);
});
it("should return a negative result when subtracting a larger number from a smaller number", function() {
const result = calc.subtract(3, 5);
expect(result).toBe(-2);
});
});
});
এখানে:
beforeEach()ওafterEach()ফাংশনটি Calculator ক্লাসের ইনস্ট্যান্স তৈরি এবং পরিস্কার কার্যক্রম পরিচালনা করছে।- Nested
describe()ব্লকগুলো প্রতিটি অপারেশন (Addition, Subtraction) আলাদাভাবে পরীক্ষা করছে।
সারাংশ
- Nested
describe()ব্লক: এটি একাধিক টেস্ট কেসকে শ্রেণীবদ্ধভাবে সাজানোর জন্য ব্যবহার করা হয়। এর মাধ্যমে আপনি বিভিন্ন ফিচার বা সাব-ফিচার পরীক্ষা করতে পারেন এবং একে অপরের মধ্যে সম্পর্ক তৈরি করতে পারেন। - Teardown (Cleanup):
afterEach()ফাংশনটি প্রতিটি টেস্ট কেসের পরে পরিস্কার বা cleanup কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। এটি রিসোর্স ম্যানেজমেন্ট এবং পরবর্তী টেস্টে বিঘ্ন না ঘটানোর জন্য খুবই গুরুত্বপূর্ণ।
এই দুটি বৈশিষ্ট্য JasmineJS টেস্টিং প্রক্রিয়াকে আরো সুনির্দিষ্ট এবং কার্যকরী করে তোলে, যাতে আপনি বড় এবং জটিল অ্যাপ্লিকেশনেও দক্ষতার সাথে টেস্টিং করতে পারেন।
Read more