JasmineJS এ Setup এবং Teardown এমন প্রক্রিয়া যা টেস্ট কেসের আগে এবং পরে কিছু নির্দিষ্ট কার্যক্রম চালানোর জন্য ব্যবহৃত হয়। এর মাধ্যমে টেস্টগুলোর আগে কিছু প্রস্তুতি এবং পরবর্তী ব্যবস্থাপনা করা যায়। এটি খুবই কার্যকর যখন আপনি একাধিক টেস্ট কেসে পুনরাবৃত্তি কার্যক্রম এড়াতে চান, যেমন কোনো অবজেক্ট তৈরি করা বা পরিষ্কার করা।
JasmineJS এ Setup এবং Teardown সাধারণত beforeEach() এবং afterEach() ফাংশন দিয়ে করা হয়। এছাড়া beforeAll() এবং afterAll() ফাংশনগুলোও পুরো টেস্ট সুটের জন্য একবার এক্সিকিউট করার জন্য ব্যবহৃত হয়।
beforeEach() এবং afterEach()
beforeEach() এবং afterEach() ফাংশনগুলি প্রতিটি টেস্ট কেসের আগে এবং পরে কার্যক্রম চালানোর জন্য ব্যবহৃত হয়।
beforeEach(): প্রতিটি টেস্ট কেসের আগে চলবে। এটি সাধারণত টেস্টের জন্য প্রয়োজনীয় সেটআপ কাজ করতে ব্যবহৃত হয়।afterEach(): প্রতিটি টেস্ট কেসের পরে চলবে। এটি সাধারণত টেস্ট কেসের পরে পরিষ্কার বা টিয়ারডাউন কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়।
উদাহরণ:
describe("Calculator", function() {
let calc;
// Setup: প্রতিটি টেস্টের আগে নতুন Calculator তৈরি হবে
beforeEach(function() {
calc = new Calculator();
});
// Teardown: প্রতিটি টেস্টের পরে কিছু কার্যক্রম চালানো যাবে (যেমন লগিং)
afterEach(function() {
console.log("Test finished");
});
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);
});
});
এখানে:
beforeEach(): প্রতিটি টেস্ট কেসের আগেCalculatorক্লাসের একটি নতুন ইনস্ট্যান্স তৈরি হচ্ছে।afterEach(): প্রতিটি টেস্টের পরে একটি মেসেজ লোগ করা হচ্ছে।
beforeAll() এবং afterAll()
beforeAll() এবং afterAll() ফাংশনগুলি পুরো টেস্ট সুটের জন্য একবার এক্সিকিউট হয়। এটি সাধারণত টেস্ট সুটের জন্য কিছু সেটআপ বা টিয়ারডাউন কাজ করতে ব্যবহৃত হয়, যেমন ডাটাবেসের সংযোগ তৈরি করা বা সম্পন্ন করা।
beforeAll(): পুরো টেস্ট সুটের শুরুতে একবার এক্সিকিউট হয়।afterAll(): পুরো টেস্ট সুটের শেষে একবার এক্সিকিউট হয়।
উদাহরণ:
describe("Database Connection", function() {
let dbConnection;
// Setup: পুরো টেস্ট সুটের শুরুতে একবার DB সংযোগ তৈরি হবে
beforeAll(function() {
dbConnection = new DatabaseConnection();
dbConnection.connect();
});
// Teardown: পুরো টেস্ট সুটের শেষে একবার DB সংযোগ বন্ধ হবে
afterAll(function() {
dbConnection.disconnect();
});
it("should fetch data correctly", function() {
expect(dbConnection.fetchData()).toBeDefined();
});
it("should insert data correctly", function() {
expect(dbConnection.insertData({ name: "John" })).toBeTruthy();
});
});
এখানে:
beforeAll(): টেস্ট সুট শুরু হওয়ার আগে একবারDatabaseConnectionএর একটি ইনস্ট্যান্স তৈরি হচ্ছে এবং সংযোগ স্থাপন হচ্ছে।afterAll(): টেস্ট সুট শেষ হওয়ার পরে একবারDatabaseConnectionএর সংযোগ বন্ধ করা হচ্ছে।
beforeEach(), afterEach(), beforeAll(), এবং afterAll() এর পার্থক্য
| ফাংশন | কখন এক্সিকিউট হয় | ব্যবহৃত হয় |
|---|---|---|
beforeEach() | প্রতিটি টেস্ট কেসের আগে | টেস্টের জন্য প্রস্তুতি বা ইনস্ট্যান্স তৈরি করতে |
afterEach() | প্রতিটি টেস্ট কেসের পরে | টেস্ট কেসের পর পরিষ্কার বা টিয়ারডাউন কার্যক্রমে ব্যবহৃত হয় |
beforeAll() | পুরো টেস্ট সুটের আগে একবার | সম্পূর্ণ সুটের জন্য একবার সেটআপ কাজ করার জন্য |
afterAll() | পুরো টেস্ট সুটের পরে একবার | সুটের শেষে একবার পরিষ্কার বা টিয়ারডাউন কার্যক্রমে ব্যবহৃত হয় |
সারাংশ
JasmineJS এ Setup এবং Teardown প্রক্রিয়া টেস্ট কেসের আগে এবং পরে কার্যক্রম চালানোর জন্য ব্যবহৃত হয়। আপনি beforeEach() এবং afterEach() ব্যবহার করে প্রতিটি টেস্ট কেসের জন্য পৃথক প্রস্তুতি এবং পরিষ্কার কার্যক্রম পরিচালনা করতে পারেন, এবং beforeAll() ও afterAll() ব্যবহার করে পুরো টেস্ট সুটের জন্য একবার সেটআপ এবং টিয়ারডাউন কার্যক্রম করতে পারেন। এই ফাংশনগুলো আপনার টেস্ট প্রক্রিয়াকে আরো দক্ষ এবং সুসংগঠিত করতে সাহায্য করে।
Read more