RSpec-এ Collection Matchers এবং Regular Expressions খুবই কার্যকরী টুলস যা আপনার টেস্টগুলির নির্ভুলতা এবং কার্যকারিতা নিশ্চিত করতে সাহায্য করে। নিচে এই দুইটি বৈশিষ্ট্য নিয়ে বিস্তারিত আলোচনা করা হলো।
১. Collection Matchers
RSpec-এ Collection Matchers ব্যবহার করে আপনি যেকোনো Array, Hash, বা Enumerable ধরনের কোলেকশনের উপাদানগুলির উপর পরীক্ষা চালাতে পারেন। কিছু সাধারণ Collection Matchers হল:
include
include matcher ব্যবহার করে আপনি পরীক্ষা করতে পারেন যে কোনো কোলেকশন নির্দিষ্ট উপাদান অন্তর্ভুক্ত করছে কিনা।
উদাহরণ:
expect([1, 2, 3]).to include(2) # পাস হবে কারণ ২ অ্যারেতে অন্তর্ভুক্ত
expect([1, 2, 3]).to include(4) # ফেইল হবে কারণ ৪ অ্যারেতে নেইinclude matcher স্ট্রিং এবং হ্যাশের জন্যও কাজ করে।
উদাহরণ (স্ট্রিং):
expect("hello world").to include("world") # পাস হবে কারণ "world" স্ট্রিংটিতে রয়েছেউদাহরণ (হ্যাশ):
expect({a: 1, b: 2}).to include(:a) # পাস হবে কারণ :a হ্যাশে রয়েছেmatch_array
match_array matcher ব্যবহার করা হয় যখন আপনি চেক করতে চান যে একটি অ্যারে নির্দিষ্ট উপাদানগুলোই ধারণ করছে, তবে ক্রম (order) গাণিতিকভাবে কোনো বিষয় নয়।
উদাহরণ:
expect([1, 2, 3]).to match_array([3, 2, 1]) # পাস হবে, ক্রম গুরুত্বহীনcontain_exactly
contain_exactly matcher-টি match_array এর মতোই, তবে এটি অর্ডার মেনে চলতে পারে। যদি আর্ডার গুরুত্বপূর্ণ হয় তবে এটি ব্যবহার করুন।
উদাহরণ:
expect([1, 2, 3]).to contain_exactly(1, 2, 3) # পাস হবে
expect([1, 2, 3]).to contain_exactly(3, 2, 1) # ফেইল হবে কারণ অর্ডার ভিন্নall
all matcher ব্যবহার করে আপনি একটি কোলেকশনের সব উপাদান নির্দিষ্ট শর্ত পূর্ণ করছে কিনা তা যাচাই করতে পারেন।
উদাহরণ:
expect([2, 4, 6]).to all(be_even) # পাস হবে কারণ সবগুলো সংখ্যা even২. Regular Expressions
RSpec-এ Regular Expressions (regex) ব্যবহার করা যায় স্ট্রিং বা টেক্সটের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে। match matcher এই কাজের জন্য ব্যবহৃত হয়।
match
match matcher-টি স্ট্রিং এর মধ্যে একটি রেগুলার এক্সপ্রেশন মিলে কিনা পরীক্ষা করে।
উদাহরণ:
expect("hello world").to match(/hello/) # পাস হবে কারণ "hello" প্যাটার্নটি স্ট্রিংয়ে রয়েছে
expect("hello world").to match(/world$/) # পাস হবে কারণ "world" স্ট্রিংয়ের শেষের অংশ
expect("hello world").to match(/^hello/) # পাস হবে কারণ "hello" স্ট্রিংয়ের শুরুতে রয়েছেরেগুলার এক্সপ্রেশন ব্যবহার
এখানে কয়েকটি সাধারণ রেগুলার এক্সপ্রেশন প্যাটার্নের উদাহরণ দেওয়া হলো:
^: স্ট্রিংয়ের শুরু$: স্ট্রিংয়ের শেষ.: যেকোনো একক অক্ষর*: পূর্ববর্তী অক্ষর ০ অথবা এর বেশি বার+: পূর্ববর্তী অক্ষর ১ অথবা এর বেশি বার\d: যে কোনো ডিজিট\w: যে কোনো শব্দ (অক্ষর, সংখ্যা, আন্ডারস্কোর)
উদাহরণ (বিস্তারিত):
# স্ট্রিংয়ের শুরুতে "hello" থাকার বিষয়টি পরীক্ষা
expect("hello world").to match(/^hello/) # পাস হবে
# স্ট্রিংয়ের শেষের অংশে "world" থাকার বিষয়টি পরীক্ষা
expect("hello world").to match(/world$/) # পাস হবে
# শুধুমাত্র সংখ্যা পরীক্ষা (যেমন 123)
expect("123").to match(/^\d+$/) # পাস হবে, কারণ এটি পুরোপুরি সংখ্যা
expect("123abc").to match(/\d+/) # পাস হবে, কারণ এতে সংখ্যার প্যাটার্ন রয়েছে
# একাধিক ডিজিট এবং অক্ষর মিলিয়ে প্যাটার্ন ব্যবহার
expect("hello123").to match(/\w+\d+/) # পাস হবে, কারণ এটি একটি শব্দ এবং একটি সংখ্যাসারাংশ
- Collection Matchers:
include,match_array,contain_exactly, এবংallব্যবহার করে অ্যারে, স্ট্রিং বা হ্যাশের মধ্যে নির্দিষ্ট উপাদান বা শর্ত খুঁজে বের করতে সাহায্য করে।
- Regular Expressions:
matchmatcher-টি স্ট্রিংয়ে রেগুলার এক্সপ্রেশন মিলিয়ে চেক করতে ব্যবহার হয়।- রেগুলার এক্সপ্রেশন প্যাটার্নগুলির মাধ্যমে আপনি আরো শক্তিশালী এবং নির্দিষ্ট অনুসন্ধান করতে পারেন, যেমন স্ট্রিংয়ের শুরু, শেষ বা নির্দিষ্ট চরিত্রের প্যাটার্ন।
এগুলি আপনার RSpec টেস্টিংকে আরও শক্তিশালী, নির্ভুল এবং কার্যকর করে তোলে।
Read more