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এখানে:
expect { ... }.to raise_error(InvalidAgeError, "বয়স ১৮ এর কম হওয়া উচিত নয়।"): প্রথম টেস্টটি নিশ্চিত করবে যে যখন বয়স ১৬ দেওয়া হয়, তখনInvalidAgeErrorএক্সেপশনটি সঠিক বার্তা সহ নিক্ষেপ হবে।expect { ... }.not_to raise_error: দ্বিতীয় টেস্টটি নিশ্চিত করবে যে যখন বয়স ২০ দেওয়া হয়, তখন কোনো এক্সেপশন নিক্ষেপ হবে না।
৪. RSpec টেস্ট রান করা
এখন, আপনি এই টেস্টটি চালানোর জন্য নিচের কমান্ডটি ব্যবহার করতে পারেন:
rspec spec/user_spec.rbএটি নিশ্চিত করবে যে আপনার কোড সঠিকভাবে কাজ করছে এবং কাস্টম এক্সেপশনটি সঠিকভাবে হ্যান্ডল হচ্ছে।
সারাংশ
- Custom Exceptions তৈরি করতে
StandardErrorঅথবা তার কোন সাবক্লাস ইনহেরিট করা হয়। - RSpec-এ Custom Exception টেস্ট করার জন্য
raise_errormatcher ব্যবহার করা হয়, যা এক্সেপশন এবং বার্তা যাচাই করতে সাহায্য করে। - এই পদ্ধতিতে আপনি নিশ্চিত হতে পারেন যে কোডটি নির্দিষ্ট শর্তে সঠিকভাবে এক্সেপশন নিক্ষেপ করছে এবং তা সঠিকভাবে হ্যান্ডল হচ্ছে।
Read more