RSpec-এ Custom Matchers তৈরি করার মাধ্যমে আপনি আপনার নির্দিষ্ট টেস্টিং প্রয়োজনের জন্য নতুন ম্যাচার তৈরি করতে পারেন। এটি বিশেষত তখন উপকারী হয় যখন আপনি এমন কিছু চেক বা যাচাই করতে চান যা রুবির বিল্ট-ইন ম্যাচারগুলির মাধ্যমে সম্ভব নয়। Custom Matchers-এ সাধারণত match বা matches? মেথড ব্যবহার করা হয় যা টেস্টের সঠিকতা নির্ধারণ করে।
Custom Matchers তৈরি করার পদক্ষেপ
- Matcher তৈরি করা: প্রথমে
RSpec::Matchersক্লাস ব্যবহার করে একটি কাস্টম ম্যাচার তৈরি করতে হবে। - matcher method সংজ্ঞায়িত করা: কাস্টম ম্যাচার তৈরির পর, আপনি
matches?মেথডে কোড যুক্ত করবেন যাতে এটি নির্ধারণ করতে পারে যে কোন শর্তটি সঠিক কিনা। - failure_message ও success_message সংজ্ঞায়িত করা: এই মেথড দুটি ব্যবহার করে আপনি টেস্ট পাস বা ফেল হলে কি বার্তা দেখাবেন তা কাস্টমাইজ করতে পারবেন।
উদাহরণ: কাস্টম ম্যাচার তৈরি করা
ধরা যাক, আপনি একটি কাস্টম ম্যাচার তৈরি করতে চান যা যাচাই করবে যে একটি অ্যারে একটি নির্দিষ্ট সংখ্যা অন্তর্ভুক্ত করে কিনা।
১. Custom Matcher তৈরি করা
# spec/support/matchers/include_number.rb
RSpec::Matchers.define :include_number do |expected|
match do |actual|
# এখানে অ্যারের মধ্যে নির্দিষ্ট সংখ্যা আছে কিনা যাচাই করা হচ্ছে
actual.include?(expected)
end
failure_message do |actual|
"expected #{actual} to include #{expected}"
end
failure_message_when_negated do |actual|
"expected #{actual} not to include #{expected}"
end
endএখানে include_number নামে একটি কাস্টম ম্যাচার তৈরি করা হয়েছে যা অ্যারের মধ্যে একটি নির্দিষ্ট সংখ্যা উপস্থিত কিনা তা যাচাই করবে।
২. কাস্টম ম্যাচার ব্যবহার করা
এখন, আপনি এই কাস্টম ম্যাচারটি আপনার টেস্টে ব্যবহার করতে পারবেন:
# spec/array_spec.rb
describe Array do
it "should include number 5" do
expect([1, 2, 3, 4, 5]).to include_number(5)
end
it "should not include number 6" do
expect([1, 2, 3, 4, 5]).not_to include_number(6)
end
endএখানে, include_number কাস্টম ম্যাচারটি ব্যবহার করা হয়েছে যা যাচাই করছে যে অ্যারেটি 5 অন্তর্ভুক্ত করেছে কিনা এবং 6 অন্তর্ভুক্ত না করার জন্য not_to ব্যবহার করা হয়েছে।
Custom Matchers-এ অতিরিক্ত বৈশিষ্ট্য সংযোজন
Custom Matchers আরও উন্নত করা যেতে পারে বিশেষ কিছু বৈশিষ্ট্য যেমন:
descriptionমেথড: আপনি যদি কাস্টম ম্যাচারের একটি বর্ণনা চান, তাহলে আপনিdescriptionমেথড ব্যবহার করতে পারেন।
RSpec::Matchers.define :include_number do |expected|
match do |actual|
actual.include?(expected)
end
description do
"include the number #{expected}"
end
endsupports_block_expectations: আপনি যদি কাস্টম ম্যাচারে ব্লক সমর্থন চান, তাহলেsupports_block_expectationsব্যবহার করতে পারেন।
RSpec::Matchers.define :be_a_multiple_of do |expected|
match do |actual|
actual % expected == 0
end
supports_block_expectations
endএটি expect { some_code }.to be_a_multiple_of(5) এর মতো ব্লক-বেসড চেক করার অনুমতি দেয়।
Custom Matchers এর সুবিধা
- পুনঃব্যবহারযোগ্যতা: একবার কাস্টম ম্যাচার তৈরি করলে, আপনি এটি পুনঃব্যবহার করতে পারবেন। একাধিক টেস্টের মধ্যে একই আচরণ যাচাই করার জন্য এটি উপকারী।
- কোডের পরিষ্কারতা: আপনার টেস্ট কোড পরিষ্কার এবং সহজ হতে পারে যদি আপনি কাস্টম ম্যাচার তৈরি করে কাজ করেন, কারণ আপনি কোডের জন্য নতুন, পরিষ্কার সিম্যান্টিক্স তৈরি করতে পারেন।
- পুনঃব্যবহারযোগ্য, রিডেবল এবং এক্সপ্রেসিভ: কাস্টম ম্যাচারগুলো কোডকে আরও এক্সপ্রেসিভ এবং পাঠযোগ্য করে তোলে।
সারাংশ
Custom Matchers RSpec-এ একটি শক্তিশালী ফিচার, যা টেস্ট কোডকে আরও বোধগম্য এবং পুনঃব্যবহারযোগ্য করতে সাহায্য করে। এর মাধ্যমে আপনি আপনার নির্দিষ্ট প্রয়োজন অনুযায়ী নতুন ম্যাচার তৈরি করতে পারেন, যা পরীক্ষার প্রক্রিয়াকে সহজ এবং পরিষ্কার করে তোলে। Custom Matchers ব্যবহারের মাধ্যমে আপনি টেস্টগুলির স্বচ্ছতা এবং মডুলারিটি বৃদ্ধি করতে পারেন।
Read more