RSpec এ হুকস (Hooks) হলো বিশেষ ফাংশন যা টেস্ট চালানোর আগে বা পরে স্বয়ংক্রিয়ভাবে চালানো হয়। এগুলি বিভিন্ন পরিস্থিতিতে কোডের কার্যকারিতা নিয়ন্ত্রণ এবং টেস্টিং পরিবেশ প্রস্তুত করার জন্য ব্যবহার করা হয়। মূলত তিনটি ধরনের হুক রয়েছে: before, after, এবং around।
1. before Hook
before hook টেস্টের আগে কোড চালানোর জন্য ব্যবহৃত হয়। এটি টেস্ট চালানোর আগে নির্দিষ্ট পরিবেশ বা পরিস্থিতি তৈরি করতে সাহায্য করে। সাধারণত টেস্টের জন্য প্রস্তুতি কাজ করার সময় ব্যবহার করা হয়, যেমন ডেটাবেস সেশন তৈরি করা বা কিছু ডেটা ইনিশিয়ালাইজ করা।
ব্যবহার:
describe "Calculator" do
before(:each) do
# টেস্ট শুরু হওয়ার আগে যা কিছু করতে হবে
@calculator = Calculator.new
end
it "দ্বিতীয় সংখ্যা যোগ করে সঠিক ফলাফল দেয়" do
expect(@calculator.add(2, 3)).to eq(5)
end
endএখানে before(:each) টেস্টের আগে @calculator ইনস্ট্যান্স তৈরি করে।
অন্যান্য ভ্যারিয়েন্ট:
before(:all): এটি সমস্ত টেস্টের আগে একবার চালানো হয়, যা পুরো ডেসক্রাইব ব্লকের জন্য প্রযোজ্য।before(:all) do # সমস্ত টেস্টের আগে একবার চালানো হবে end
2. after Hook
after hook টেস্টের পরে কোড চালানোর জন্য ব্যবহৃত হয়। এটি টেস্ট শেষ হওয়ার পর কিছু ক্লিনআপ কাজ যেমন ডেটাবেস রিসেট বা ফাইল ডিলিট করার জন্য ব্যবহার করা হয়।
ব্যবহার:
describe "Calculator" do
after(:each) do
# টেস্টের পরে যা কিছু করতে হবে (যেমন ফাইল/ডেটাবেস ক্লিনআপ)
puts "এই টেস্টটির পরে ক্লিনআপ সম্পন্ন"
end
it "দ্বিতীয় সংখ্যা যোগ করে সঠিক ফলাফল দেয়" do
expect(@calculator.add(2, 3)).to eq(5)
end
endএখানে after(:each) টেস্টের পরে puts স্টেটমেন্টটি চালাবে।
অন্যান্য ভ্যারিয়েন্ট:
after(:all): এটি সমস্ত টেস্টের পরে একবার চালানো হয়, যা পুরো ডেসক্রাইব ব্লকের জন্য প্রযোজ্য।after(:all) do # সমস্ত টেস্টের পরে একবার চালানো হবে end
3. around Hook
around hook একটি বিশেষ ধরনের হুক, যা টেস্টের আগে এবং পরে কোড চালানোর জন্য ব্যবহৃত হয়। এটি আপনাকে টেস্টের পুরো পরিবেশের আগে এবং পরে কিছু কাস্টম লজিক চালাতে দেয়। এটি বিশেষত তখন ব্যবহৃত হয় যখন আপনি টেস্টের চালানো সময়ের মধ্যে কিছু নির্দিষ্ট কার্যাবলী পরিচালনা করতে চান, যেমন লগিং বা টাইমিং, অথবা সম্পূর্ণ টেস্টের আচরণ নিয়ন্ত্রণ করতে চান।
ব্যবহার:
describe "Calculator" do
around(:each) do |example|
# টেস্ট শুরু হওয়ার আগে কিছু কোড চালানো হবে
puts "টেস্ট শুরু হচ্ছে"
example.run
# টেস্ট শেষে কিছু কোড চালানো হবে
puts "টেস্ট শেষ"
end
it "দ্বিতীয় সংখ্যা যোগ করে সঠিক ফলাফল দেয়" do
expect(@calculator.add(2, 3)).to eq(5)
end
endএখানে around(:each) হুকটি টেস্ট শুরু হওয়ার আগে এবং পরে কিছু কোড চালাতে দেয়। example.run টেস্টটি চালানোর জন্য ব্যবহৃত হয়।
অন্যান্য ভ্যারিয়েন্ট:
around(:all): এটি সমস্ত টেস্টের আগে এবং পরে একবার চালানো হয়।around(:all) do |example| # সমস্ত টেস্টের আগে কিছু কোড চালানো হবে example.run # সমস্ত টেস্টের পরে কিছু কোড চালানো হবে end
সারাংশ
beforeHook: টেস্ট চালানোর আগে কিছু কাজ সম্পাদন করতে ব্যবহৃত হয়, যেমন সেটআপ বা ইনিশিয়ালাইজেশন।afterHook: টেস্ট সম্পন্ন হওয়ার পরে কিছু কাজ সম্পাদন করতে ব্যবহৃত হয়, যেমন ক্লিনআপ বা ডিলিট করা।aroundHook: টেস্ট চালানোর আগে এবং পরে কিছু কাস্টম লজিক চালানোর জন্য ব্যবহৃত হয়। এটি আপনাকে পুরো টেস্টের কার্যক্রম নিয়ন্ত্রণ করার সুবিধা দেয়।
এই হুকগুলো RSpec-এ টেস্টের প্রিপারেশন, ক্লিনআপ, এবং কাস্টম কার্যকলাপ পরিচালনা করতে সাহায্য করে, এবং এর মাধ্যমে টেস্টিং আরও শক্তিশালী ও নমনীয় হয়।
Read more