Context Specific Hooks এবং তাদের কার্যকারিতা

Hooks এবং Test Setup (হুক এবং টেস্ট সেটআপ) - আরএসপেক (RSpec) - Computer Programming

324

RSpec-এ context specific hooks এমন হুকস যা নির্দিষ্ট context বা শর্তের মধ্যে কোড রান করতে ব্যবহৃত হয়। এগুলি RSpec টেস্টের আগে, পরে বা অন্যান্য নির্দিষ্ট সময়ে কার্যকরী হয় এবং টেস্টের কাঠামো বা সুনির্দিষ্ট শর্ত অনুযায়ী কোড চালাতে সাহায্য করে। মূলত, এগুলি before, after, এবং around হুকসের বিশেষ রূপ, যা নির্দিষ্ট context (বর্ণনা) বা describe ব্লকের মধ্যে ব্যবহৃত হয়।

১. Before Hook

before হুক ব্যবহার করে টেস্টের পূর্বে কিছু কোড চালানো হয়। এটি টেস্টের প্রস্তুতির জন্য উপযুক্ত, যেমন ডাটাবেস সেটআপ, ফাইল লোডিং বা অবজেক্ট ইনিশিয়ালাইজেশন।

উদাহরণ:

describe "Calculator" do
  before(:each) do
    @calc = Calculator.new
  end

  it "যোগফল সঠিকভাবে বের করে" do
    expect(@calc.add(2, 3)).to eq(5)
  end
end

এখানে, before(:each) প্রতিটি টেস্টের আগে @calc অবজেক্ট তৈরি করবে। ফলে, প্রতিটি টেস্টের জন্য নতুন একটি ক্যালকুলেটর অবজেক্ট থাকবে।

২. After Hook

after হুক ব্যবহার করা হয় টেস্টের পর কিছু কোড চালানোর জন্য। এটি সাধারণত রিসোর্স ক্লিনআপ, লগিং, বা পরবর্তী টেস্টের জন্য কিছু ডেটা পরিবর্তন করার জন্য ব্যবহৃত হয়।

উদাহরণ:

describe "Database" do
  after(:each) do
    Database.clean_up
  end

  it "নতুন রেকর্ড ইনসার্ট করে" do
    expect(Database.insert_record("Test")).to eq(true)
  end
end

এখানে, after(:each) টেস্টের পর Database.clean_up ফাংশন চালাবে, যা টেস্ট শেষে ডেটাবেস ক্লিনআপ করবে।

৩. Around Hook

around হুক সাধারণত টেস্ট চালানোর আগে এবং পরে কোড চালানোর জন্য ব্যবহৃত হয়। এটি টেস্টটি মডিফাই বা ম্যানিপুলেট করার সময় ব্যবহার করা হয়।

উদাহরণ:

describe "Time" do
  around(:each) do |example|
    Timecop.freeze(Time.local(2022, 12, 25)) do
      example.run
    end
  end

  it "বর্তমান সময় সঠিকভাবে পরীক্ষা করে" do
    expect(Time.now.year).to eq(2022)
  end
end

এখানে, around(:each) হুক Timecop.freeze ব্যবহার করে সময়টি নির্দিষ্ট করে দেয়। এর ফলে টেস্ট চলাকালীন সময় নির্দিষ্ট একটি তারিখে ফ্রিজ করা থাকবে। example.run টেস্টটি চালানোর নির্দেশ দেয়।


৪. Context Specific Hooks

context ব্যবহার করা হয় একটি নির্দিষ্ট পরিস্থিতিতে টেস্টের আচরণ পরীক্ষা করার জন্য। যখন context ব্যবহার করা হয়, তখন তার সাথে সম্পর্কিত before, after, এবং around হুকসও কার্যকরী হয় সেই নির্দিষ্ট context-এ।

উদাহরণ:

describe "User" do
  context "when user is logged in" do
    before(:each) do
      @user = User.new(logged_in: true)
    end

    it "should show the dashboard" do
      expect(@user.dashboard_visible?).to eq(true)
    end
  end

  context "when user is logged out" do
    before(:each) do
      @user = User.new(logged_in: false)
    end

    it "should not show the dashboard" do
      expect(@user.dashboard_visible?).to eq(false)
    end
  end
end

এখানে, before(:each) হুক দুটি ভিন্ন context এর জন্য আলাদা ভাবে কার্যকরী হয়েছে। প্রথম context-এ ব্যবহারকারী লগড ইন এবং দ্বিতীয় context-এ ব্যবহারকারী লগড আউট। প্রতিটি পরিস্থিতি অনুযায়ী প্রস্তুতি নেওয়া হয়েছে।


হুকসের ব্যবহারের সুবিধা

  1. কোড পুনঃব্যবহারযোগ্যতা: before, after, এবং around হুকস টেস্টের প্রস্তুতি ও পরবর্তী কার্যক্রম পুনঃব্যবহারযোগ্য করে তোলে।
  2. টেস্ট পরিচালনার সহজতা: বিভিন্ন কোডের অংশের জন্য প্রস্তুতি ও পরিষ্কার কাজ করতে হুকস ব্যবহৃত হয়, যা টেস্টকে আরও পরিষ্কার ও সহজ করে তোলে।
  3. টেস্টের অবস্থা নির্ধারণ: context-specific হুকস টেস্টের অবস্থা বা পরিবেশ অনুযায়ী কোড রান করতে সহায়ক।

সারাংশ

RSpec-এ context specific hooks টেস্টের নির্দিষ্ট পরিস্থিতির জন্য কোড রান করতে ব্যবহৃত হয়। before, after, এবং around হুকস ব্যবহার করে আপনি টেস্টের প্রস্তুতি, পরবর্তী কার্যক্রম, এবং টেস্টের মাঝে কোড মডিফাই করতে পারেন। এগুলি কোডের সঠিকতার পরীক্ষা করার জন্য কার্যকরী এবং সহজ টেস্ট ব্যবস্থাপনার সহায়ক।

Content added By
Promotion

Are you sure to start over?

Loading...