RSpec এর মাধ্যমে Custom Exceptions হ্যান্ডল করা

Exception Handling এবং Edge Case Testing (এক্সেপশন হ্যান্ডলিং এবং এজ কেস টেস্টিং) - আরএসপেক (RSpec) - Computer Programming

253

Custom exceptions হল এমন এক্সেপশন যা ডেভেলপাররা নিজেদের কোডের মধ্যে নির্দিষ্ট পরিস্থিতি বা ত্রুটি হ্যান্ডল করার জন্য তৈরি করেন। RSpec-এ custom exceptions হ্যান্ডল করার জন্য টেস্ট লেখা একটি গুরুত্বপূর্ণ দিক, যা কোডের সঠিক কার্যকারিতা নিশ্চিত করে।

এখানে আমরা custom exception তৈরি করব এবং সেটির জন্য RSpec টেস্ট লিখে দেখব কিভাবে এটি হ্যান্ডল করা হয়।


১. Custom Exception তৈরি করা

প্রথমে একটি custom exception তৈরি করতে হবে। সাধারণভাবে, রুবিতে একটি কাস্টম এক্সেপশন ক্লাস তৈরি করার জন্য আপনি StandardError বা এর কোনও সাবক্লাস ইনহেরিট করবেন।

Custom Exception উদাহরণ:

# custom_exception.rb
class InvalidAgeError < StandardError
  def initialize(msg="এটি একটি অবৈধ বয়স।")
    super(msg)
  end
end

এখানে, InvalidAgeError একটি কাস্টম এক্সেপশন যা ব্যবহারকারীর অযাচিত বয়স নির্ধারণের জন্য ত্রুটি প্রদর্শন করবে।


২. Custom Exception ব্যবহার করা

এখন আমরা এই কাস্টম এক্সেপশনটি ব্যবহার করব। উদাহরণস্বরূপ, একটি User ক্লাস তৈরি করব যেখানে ব্যবহারকারীর বয়স যাচাই করা হবে এবং অবৈধ বয়স দেওয়ার ক্ষেত্রে InvalidAgeError এক্সেপশন নিক্ষেপ করা হবে।

# user.rb
class User
  def initialize(name, age)
    @name = name
    @age = age
    validate_age
  end

  def validate_age
    raise InvalidAgeError.new("বয়স ১৮ এর কম হওয়া উচিত নয়।") if @age < 18
  end
end

এখানে, যদি @age ১৮ বছরের কম হয়, তবে InvalidAgeError এক্সেপশন নিক্ষেপ করা হবে।


৩. RSpec-এ Custom Exception টেস্ট করা

এখন আমরা RSpec ব্যবহার করে এই কাস্টম এক্সেপশন হ্যান্ডল করব এবং নিশ্চিত করব যে এক্সেপশনটি সঠিকভাবে কাজ করছে। এখানে আমরা টেস্ট করব যে অবৈধ বয়স দিলে InvalidAgeError এক্সেপশন আসছে কি না।

RSpec টেস্ট কোড:

# spec/user_spec.rb
require './user'
require './custom_exception'

describe User do
  context "যখন অবৈধ বয়স প্রদান করা হয়" do
    it "একটি InvalidAgeError এক্সেপশন নিক্ষেপ করবে" do
      expect { User.new("John", 16) }.to raise_error(InvalidAgeError, "বয়স ১৮ এর কম হওয়া উচিত নয়।")
    end
  end

  context "যখন বৈধ বয়স প্রদান করা হয়" do
    it "কোনো এক্সেপশন নিক্ষেপ করবে না" do
      expect { User.new("John", 20) }.not_to raise_error
    end
  end
end

এখানে:

  1. expect { ... }.to raise_error(InvalidAgeError, "বয়স ১৮ এর কম হওয়া উচিত নয়।"): প্রথম টেস্টটি নিশ্চিত করবে যে যখন বয়স ১৬ দেওয়া হয়, তখন InvalidAgeError এক্সেপশনটি সঠিক বার্তা সহ নিক্ষেপ হবে।
  2. expect { ... }.not_to raise_error: দ্বিতীয় টেস্টটি নিশ্চিত করবে যে যখন বয়স ২০ দেওয়া হয়, তখন কোনো এক্সেপশন নিক্ষেপ হবে না।

৪. RSpec টেস্ট রান করা

এখন, আপনি এই টেস্টটি চালানোর জন্য নিচের কমান্ডটি ব্যবহার করতে পারেন:

rspec spec/user_spec.rb

এটি নিশ্চিত করবে যে আপনার কোড সঠিকভাবে কাজ করছে এবং কাস্টম এক্সেপশনটি সঠিকভাবে হ্যান্ডল হচ্ছে।


সারাংশ

  • Custom Exceptions তৈরি করতে StandardError অথবা তার কোন সাবক্লাস ইনহেরিট করা হয়।
  • RSpec-এ Custom Exception টেস্ট করার জন্য raise_error matcher ব্যবহার করা হয়, যা এক্সেপশন এবং বার্তা যাচাই করতে সাহায্য করে।
  • এই পদ্ধতিতে আপনি নিশ্চিত হতে পারেন যে কোডটি নির্দিষ্ট শর্তে সঠিকভাবে এক্সেপশন নিক্ষেপ করছে এবং তা সঠিকভাবে হ্যান্ডল হচ্ছে।
Content added By
Promotion

Are you sure to start over?

Loading...