RSpec-এ Rails Specific Matchers হলো এমন Matchers যা বিশেষভাবে Ruby on Rails অ্যাপ্লিকেশন টেস্টিংয়ের জন্য তৈরি। এগুলি Rails-এর বিভিন্ন ফিচার এবং ফাংশনালিটিকে টেস্ট করার জন্য উপযুক্ত, যেমন ডাটাবেস সম্পর্কিত যাচাই, রাউটিং পরীক্ষা, মডেল ভ্যালিডেশন পরীক্ষা, এবং আরও অনেক কিছু। এই Matchers গুলি Rails-এর বিল্ট-ইন ফাংশনালিটিগুলির সাথে সামঞ্জস্যপূর্ণ এবং আরও কার্যকর টেস্টিং সহজ করে তোলে।
Rails Specific Matchers-এ কিছু জনপ্রিয় Matchers ব্যবহার করা হয়েছে। নিচে কিছু সাধারণ এবং গুরুত্বপূর্ণ Matchers-এর বর্ণনা দেওয়া হলো:
১. expect(response).to render_template
এটি ব্যবহার করা হয় কন্ট্রোলার রেসপন্সের টেমপ্লেট যাচাই করতে। এটি নিশ্চিত করে যে কন্ট্রোলারের একশন একটি নির্দিষ্ট টেমপ্লেট রেন্ডার করেছে।
উদাহরণ:
describe ArticlesController do
it "রেন্ডার করবে 'show' টেমপ্লেট" do
get :show, params: { id: 1 }
expect(response).to render_template("show")
end
endএখানে, get :show এর মাধ্যমে ArticlesController এর show একশন কল করা হয়েছে এবং পরে render_template("show") দ্বারা যাচাই করা হয়েছে যে রেসপন্সে show টেমপ্লেট রেন্ডার হয়েছে কিনা।
২. expect(response).to redirect_to
এই Matcher ব্যবহার করা হয় রিডাইরেকশন যাচাই করতে। এটি নিশ্চিত করে যে একটি একশন কোনও নির্দিষ্ট রাউটে রিডাইরেক্ট করছে।
উদাহরণ:
describe ArticlesController do
it "রিডাইরেক্ট করবে 'articles_path' এ" do
post :create, params: { article: { title: "New Article" } }
expect(response).to redirect_to(articles_path)
end
endএখানে, post :create একশনটি কল করার পর যাচাই করা হচ্ছে যে রেসপন্সে articles_path এ রিডাইরেক্ট করা হয়েছে কিনা।
৩. expect(assigns(:variable)).to
এই Matcher ব্যবহার করা হয় কন্ট্রোলারের ভেরিয়েবল অ্যাসাইনমেন্ট যাচাই করতে। এটি পরীক্ষা করে যে কন্ট্রোলার কোনো ভেরিয়েবলকে সঠিকভাবে অ্যাসাইন করেছে কিনা।
উদাহরণ:
describe ArticlesController do
it "অ্যাসাইন করবে @article" do
article = Article.create(title: "New Article")
get :show, params: { id: article.id }
expect(assigns(:article)).to eq(article)
end
endএখানে, get :show একশন কল করার পর @article ভেরিয়েবল অ্যাসাইন হয়েছে কিনা তা যাচাই করা হচ্ছে।
৪. expect(model).to be_valid
এটি ব্যবহার করা হয় মডেল ভ্যালিডেশন যাচাই করতে। এটি নিশ্চিত করে যে মডেল একটি বৈধ অবস্থা (valid state) ধারণ করছে।
উদাহরণ:
describe Article do
it "বৈধ মডেল হওয়া উচিত" do
article = Article.new(title: "Valid Article")
expect(article).to be_valid
end
endএখানে, একটি নতুন Article তৈরি করা হচ্ছে এবং যাচাই করা হচ্ছে যে এটি বৈধ কিনা।
৫. expect { block }.to change
এই Matcher ব্যবহার করা হয় অবজেক্টের স্টেট পরিবর্তন যাচাই করতে। এটি পরীক্ষা করে যে একটি নির্দিষ্ট কোড ব্লক কোনো ভেরিয়েবলের মান পরিবর্তন করেছে কিনা।
উদাহরণ:
describe Article do
it "একটি নতুন আর্টিকেল তৈরি করলে আর্টিকেল সংখ্যা বৃদ্ধি পাবে" do
expect { Article.create(title: "New Article") }.to change(Article, :count).by(1)
end
endএখানে, একটি নতুন Article তৈরি করার পরে Article.count পরিবর্তন হয়েছে কিনা তা যাচাই করা হচ্ছে।
৬. expect(model).to have_db_column
এটি ব্যবহার করা হয় ডাটাবেস কলাম যাচাই করতে। এটি নিশ্চিত করে যে নির্দিষ্ট মডেলের ডাটাবেসে একটি নির্দিষ্ট কলাম আছে।
উদাহরণ:
describe Article do
it "has a title column" do
expect(Article).to have_db_column(:title)
end
endএখানে, Article মডেলের title কলামটি ডাটাবেসে উপস্থিত কিনা তা যাচাই করা হচ্ছে।
৭. expect(model).to validate_presence_of
এটি ব্যবহার করা হয় ভ্যালিডেশন চেক করার জন্য, যেমন একটি নির্দিষ্ট ফিল্ডের প্রেসেন্স ভ্যালিডেশন চেক করা।
উদাহরণ:
describe Article do
it "যাচাই করবে যে title ফিল্ডটি উপস্থিত" do
expect(Article).to validate_presence_of(:title)
end
endএখানে, Article মডেলে title ফিল্ডে প্রেসেন্স ভ্যালিডেশন আছে কিনা তা যাচাই করা হচ্ছে।
৮. expect(model).to belong_to
এটি ব্যবহার করা হয় অ্যাসোসিয়েশন চেক করার জন্য, যেমন একটি মডেল কোনো নির্দিষ্ট মডেলের সাথে belongs_to সম্পর্কযুক্ত কিনা।
উদাহরণ:
describe Article do
it "যাচাই করবে যে এটি author এর সাথে belongs_to সম্পর্কযুক্ত" do
expect(Article).to belong_to(:author)
end
endএখানে, Article মডেলটি author মডেলের সাথে belongs_to সম্পর্কিত কিনা তা যাচাই করা হচ্ছে।
সারাংশ
Rails Specific Matchers হল RSpec-এ বিশেষভাবে Rails অ্যাপ্লিকেশন টেস্টিংয়ের জন্য তৈরি Match ধরনের টুলস। এগুলি Rails-এর বিভিন্ন ফিচার পরীক্ষা করার জন্য উপযোগী, যেমন কন্ট্রোলার রেসপন্স, মডেল ভ্যালিডেশন, ডাটাবেস কলাম, অ্যাসোসিয়েশন এবং ফাংশনাল টেস্টিং। এই Matchers ব্যবহারের মাধ্যমে Rails অ্যাপ্লিকেশনের বিভিন্ন অংশকে আরও সহজভাবে টেস্ট করা যায়।
Read more