JasmineJS এ Test Suites হল টেস্ট কেসের একটি গ্রুপ যা একটি নির্দিষ্ট ফিচার বা কার্যকারিতা পরীক্ষা করে। Test Suite তৈরি এবং সংগঠিত করার মাধ্যমে আপনি আপনার টেস্ট কেসগুলোকে গঠনমূলক এবং সহজে পরিচালনাযোগ্য করে তুলতে পারেন। একটি Test Suite এ আপনি একাধিক describe() ব্লক রাখতে পারেন, যেগুলোর মধ্যে আপনি বিভিন্ন টেস্ট কেস it() দ্বারা সংজ্ঞায়িত করবেন।
এটি কোডের বিভিন্ন অংশ বা ফিচারের উপর নির্ভর করে টেস্ট কেসগুলোর সঠিক গ্রুপিং করতে সহায়তা করে এবং টেস্ট রানের সময় একটি সুসংগঠিত আউটপুট প্রদান করে।
Test Suite কি?
Test Suite হল টেস্ট কেসের একটি গোষ্ঠী যা একটি নির্দিষ্ট কার্যকারিতা বা ফিচার পরীক্ষা করে। একাধিক describe() ব্লক ব্যবহার করে আপনি বিভিন্ন টেস্ট কেসগুলোকে পৃথকভাবে এবং সংযুক্তভাবে পরীক্ষা করতে পারেন।
Test Suite তৈরি করা
Test Suite তৈরি করতে describe() ব্লক ব্যবহার করা হয়। এর মধ্যে একাধিক it() ব্লক থাকে, যেগুলো নির্দিষ্ট টেস্ট কেস বর্ণনা করে।
উদাহরণ:
describe("Calculator Functions", function() {
describe("Addition", function() {
it("should add two numbers correctly", 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);
});
});
describe("Multiplication", function() {
it("should multiply two numbers correctly", function() {
const result = 2 * 3;
expect(result).toBe(6);
});
});
});
এখানে:
- প্রথম
describe()ব্লকটি Calculator Functions টেস্ট সুট তৈরি করেছে। - এর ভিতরে একাধিক
describe()ব্লক ব্যবহার করা হয়েছে, যেমন Addition, Subtraction, এবং Multiplication, যেখানে প্রতিটি ফিচারের জন্য আলাদা টেস্ট কেস রয়েছে।
Test Suites এর মধ্যে Setup এবং Teardown
JasmineJS এ Setup এবং Teardown ফাংশনগুলোর মাধ্যমে আপনি টেস্ট কেসের আগে বা পরে কিছু কার্যক্রম পরিচালনা করতে পারেন। সাধারণত, আপনি beforeEach(), afterEach(), beforeAll(), এবং afterAll() ফাংশন ব্যবহার করে টেস্ট সুটের জন্য কিছু সাধারণ প্রস্তুতি বা পরিষ্কার কার্যক্রম করতে পারেন।
উদাহরণ:
describe("Calculator", function() {
let calc;
beforeEach(function() {
calc = new Calculator(); // প্রতিটি টেস্ট কেসের আগে নতুন Calculator তৈরি হবে
});
afterEach(function() {
console.log("Test finished");
});
describe("Addition", function() {
it("should add two numbers correctly", function() {
expect(calc.add(2, 3)).toBe(5);
});
});
describe("Subtraction", function() {
it("should subtract two numbers correctly", function() {
expect(calc.subtract(5, 3)).toBe(2);
});
});
});
এখানে:
beforeEach(): প্রতিটি টেস্ট কেসের আগেCalculatorক্লাসের একটি নতুন ইনস্ট্যান্স তৈরি করা হচ্ছে।afterEach(): প্রতিটি টেস্ট কেসের পরে একটি মেসেজ লগ করা হচ্ছে।
Test Suites এবং Nested Describe Blocks
JasmineJS এ আপনি Nested Describe Blocks ব্যবহার করে আরও গভীরভাবে Test Suites তৈরি করতে পারেন। এর মাধ্যমে আপনি টেস্ট কেসের গঠন আরও সুসংগঠিত করতে পারবেন।
উদাহরণ:
describe("Bank Account", function() {
let account;
beforeEach(function() {
account = new BankAccount();
});
describe("Deposit", function() {
it("should deposit money correctly", function() {
account.deposit(100);
expect(account.getBalance()).toBe(100);
});
it("should not allow negative deposits", function() {
account.deposit(-50);
expect(account.getBalance()).toBe(0);
});
});
describe("Withdrawal", function() {
it("should withdraw money correctly", function() {
account.deposit(200);
account.withdraw(100);
expect(account.getBalance()).toBe(100);
});
it("should not allow overdraft", function() {
account.withdraw(100);
expect(account.getBalance()).toBe(0);
});
});
});
এখানে:
- Nested
describe()ব্লক ব্যবহার করা হয়েছে, যেমন Deposit এবং Withdrawal, যার মধ্যে প্রতিটি ফিচারের জন্য টেস্ট কেসগুলো গ্রুপ করা হয়েছে।
Test Suites এর ভিতরে Conditional Logic
JasmineJS এ আপনি conditional logic ব্যবহার করতে পারেন, যাতে কিছু টেস্ট নির্দিষ্ট শর্তে রান করে। যেমন যদি কোনো নির্দিষ্ট ভেরিয়েবল সঠিক মান থাকে তবে একটি টেস্ট রান হবে।
উদাহরণ:
describe("Feature A", function() {
let isFeatureEnabled = true;
if (isFeatureEnabled) {
it("should run this test when the feature is enabled", function() {
expect(true).toBe(true);
});
} else {
it("should skip this test when the feature is disabled", function() {
expect(true).toBe(false); // এই টেস্টটি রান হবে না
});
}
});
এখানে:
isFeatureEnabledযদিtrueহয়, তাহলে একটি টেস্ট রান হবে, এবং যদিfalseহয়, তাহলে অন্য টেস্টটি স্কিপ হবে।
টেস্ট রিপোর্টিং
JasmineJS এ Test Suites এর ভিতরে রিপোর্টিং তৈরি করা যেতে পারে, যাতে টেস্ট রানের পর প্রতিটি টেস্ট কেসের ফলাফল দেখা যায়। Jasmine এর নিজস্ব কনসোল রিপোর্টার আছে, তবে আপনি কমান্ড লাইন টুল বা JUnit রিপোর্টার ব্যবহার করতে পারেন আরও বিস্তারিত রিপোর্ট পাওয়ার জন্য।
উদাহরণ:
describe("Sample Test Suite", function() {
it("should work", function() {
expect(true).toBe(true);
});
it("should fail", function() {
expect(true).toBe(false);
});
});
এখানে:
- JasmineJS কনসোল রিপোর্টার ব্যবহার করে টেস্টের ফলাফল কনসোলে দেখানো হবে।
সারাংশ
JasmineJS এ Test Suites তৈরি এবং সংগঠিত করার মাধ্যমে আপনি টেস্ট কেসগুলোকে গোষ্ঠীভুক্ত করতে এবং সুসংগঠিত আউটপুট পেতে পারেন। describe() ব্লক ব্যবহার করে Test Suites তৈরি করা হয় এবং এর মধ্যে it() ব্লকগুলো দিয়ে নির্দিষ্ট টেস্ট কেস লেখা হয়। Setup এবং Teardown ফাংশনগুলির মাধ্যমে টেস্টের আগে এবং পরে কার্যক্রম চালানো যায়। Nested describe blocks ব্যবহার করে আরও গভীরভাবে টেস্ট কেসগুলো গ্রুপ করা যেতে পারে, এবং conditional logic ব্যবহার করে কিছু টেস্ট নির্দিষ্ট শর্তে চালানো যেতে পারে।
Read more