何をテストしたいのか正確にはわかりません。また、どこでどのメソッドを使用できるかについて混乱があると思いますので、Routing specs、Request Specs、Controller specs、およびFeature specsの例を挙げてみます。うまくいけば、そのうちの1つがあなたに適しています。
ルーティング
ルート パスが確実にhome#index
アクションにルーティングされるようにする場合は、ルーティング仕様が適切な場合があります。
仕様/ルーティング/ルーティング_spec.rb
describe "Routing" do
it "routes / to home#index" do
expect(get("/")).to route_to("home#index")
end
end
リクエスト
index
ルート パスへのリクエストでテンプレートが確実にレンダリングされるようにしたい場合は、リクエスト仕様が適切な場合があります。
仕様/要求/home_requests_spec.rb
describe "Home requests" do
it 'successfully renders the index template on GET /' do
get "/"
expect(response).to be_successful
expect(response).to render_template(:index)
end
end
コントローラ
のアクションindex
へのリクエストでテンプレートが確実にレンダリングされるようにしたい場合は、コントローラ仕様が適切かもしれません (この場合はリクエスト仕様に非常に似ていますが、コントローラのみに焦点を当てています)。index
HomeController
仕様/コントローラー/home_controller_spec.rb
describe HomeController do
describe "GET index" do
it "successfully renders the index template" do
expect(controller).to receive(:index) # this line probably of dubious value
get :index
expect(response).to be_successful
expect(response).to render_template(:index)
end
end
end
特徴
によってレンダリングされるページに特定のコンテンツがあることを確認したい場合は、機能仕様が適切な場合があります (また、 Rails/RSpec のバージョンによっては、などのCapybara メソッドhome#index
を使用できる唯一の場所でもあります):visit
仕様/機能/home_features_spec.rb
feature "Index page" do
scenario "viewing the index page" do
visit root_path
expect(page).to have_text("Welcome to my awesome index page!")
end
end