RSpec এ Collection Matchers ব্যবহার করে আপনি বিভিন্ন ধরনের সংগ্রহ (array, hash, etc.) পরীক্ষা করতে পারেন। এই matchers গুলি বিশেষভাবে তখন ব্যবহার করা হয় যখন আপনি একটি সংগ্রহের মধ্যে নির্দিষ্ট মান বা শর্ত যাচাই করতে চান।
১. all Matcher
all matcher ব্যবহার করা হয় যদি আপনি চান যে একটি সংগ্রহের সবটি উপাদান নির্দিষ্ট শর্ত মেনে চলে। অর্থাৎ, একটি আর্গুমেন্টের মধ্যে সমস্ত আইটেমের জন্য যাচাই করা হয়।
উদাহরণ:
describe "all matcher" do
it "সকল উপাদানই ২ এর চেয়ে বড়" do
numbers = [3, 4, 5, 6]
expect(numbers).to all(be > 2) # সবগুলো মান ২ এর বেশি কিনা পরীক্ষা করা হচ্ছে
end
endএখানে, numbers অ্যারের সব উপাদানকে be > 2 শর্তের সাথে মিলিয়ে যাচাই করা হচ্ছে। যদি কোনো উপাদান ২ এর কম হয়, তাহলে টেস্ট ফেল হবে।
২. include Matcher
include matcher ব্যবহার করা হয় যখন আপনি চান যে কোনো সংগ্রহে নির্দিষ্ট মানটি উপস্থিত আছে কিনা তা যাচাই করতে। এটি সাধারণত array, hash বা string এ ব্যবহৃত হয়।
উদাহরণ:
describe "include matcher" do
it "অ্যারে-তে ৩ সংখ্যা থাকা উচিত" do
numbers = [1, 2, 3, 4, 5]
expect(numbers).to include(3) # অ্যারেতে ৩ আছে কিনা পরীক্ষা করা হচ্ছে
end
endএখানে, numbers অ্যারে-এ ৩ উপস্থিত কিনা তা যাচাই করা হচ্ছে। যদি ৩ উপস্থিত থাকে, টেস্ট পাস করবে।
আরও উদাহরণ (String):
describe "include matcher for strings" do
it "স্ট্রিং-এ 'Ruby' শব্দ থাকা উচিত" do
phrase = "I love Ruby programming"
expect(phrase).to include("Ruby")
end
endএখানে, স্ট্রিংয়ে "Ruby" শব্দটি রয়েছে কিনা তা যাচাই করা হচ্ছে।
৩. contain_exactly Matcher
contain_exactly matcher ব্যবহার করা হয় যখন আপনি চান যে একটি সংগ্রহে কিছু নির্দিষ্ট উপাদান সবগুলো উপস্থিত আছে এবং সেগুলি একই পরিমাণে (order এর সঙ্গে কোনো সম্পর্ক না রেখে)। এটি গুরুত্বপূর্ণ যখন সংগ্রহের অর্ডার গুরুত্বপূর্ণ নয়, কিন্তু উপাদানগুলির সংখ্যা এবং মান সঠিক হতে হবে।
উদাহরণ:
describe "contain_exactly matcher" do
it "এখানে ১, ২, ৩, ৪ সমস্ত উপাদান থাকতে হবে" do
numbers = [3, 1, 4, 2]
expect(numbers).to contain_exactly(1, 2, 3, 4) # উপাদানগুলো থাকতে হবে, অর্ডার কোনো ব্যাপার নয়
end
endএখানে, numbers অ্যারে-তে ১, ২, ৩, ৪ মানগুলোর উপস্থিতি যাচাই করা হচ্ছে, তবে অর্ডার (যেমন: [3, 1, 4, 2] এর মধ্যে) কোনো ব্যাপার নয়। যদি এই উপাদানগুলো সঠিকভাবে উপস্থিত থাকে, তাহলে টেস্ট পাস করবে।
আরও উদাহরণ:
describe "contain_exactly with strings" do
it "স্ট্রিংয়ে সব নির্দিষ্ট শব্দ থাকা উচিত" do
words = ["apple", "banana", "cherry"]
expect(words).to contain_exactly("cherry", "banana", "apple")
end
endএখানে, words অ্যারে-এ apple, banana, এবং cherry মানগুলো থাকতে হবে, কিন্তু তাদের অর্ডার গুরুত্বপূর্ণ নয়।
সারাংশ
allmatcher ব্যবহার করা হয় যখন একটি সংগ্রহের সব উপাদানের জন্য একটি শর্ত প্রযোজ্য হতে হবে।includematcher ব্যবহার করা হয় যখন আপনি চান যে একটি সংগ্রহে কোনো নির্দিষ্ট উপাদান উপস্থিত আছে কিনা তা যাচাই করতে।contain_exactlymatcher ব্যবহার করা হয় যখন আপনি চান যে একটি সংগ্রহে নির্দিষ্ট উপাদানগুলো সঠিক পরিমাণে এবং অর্ডার ছাড়া উপস্থিত থাকে।
এগুলো RSpec-এর collection matchers, যা সংগ্রহের বিভিন্ন শর্ত পরীক্ষা করতে সহায়ক।
Read more