route_to
マッチャー
route_to
マッチャーは、リクエスト(動詞 + パス)がルーティング可能であることを指定します。
これは、標準の RESTful ルート以外のルートを指定する際に最も有用です。
expect(get("/")).to route_to("welcome#index") # 2.6.0 で新しく追加されました
または
expect(:get => "/").to route_to(:controller => "welcome")
ショートカット構文を使用したルート仕様のパス
次の内容で "spec/routing/widgets_routing_spec.rb" という名前のファイルがあるとします:
require "rails_helper"
RSpec.describe "routes for Widgets", type: :routing do
it "routes /widgets to the widgets controller" do
expect(get("/widgets")).
to route_to("widgets#index")
end
end
rspec spec/routing/widgets_routing_spec.rb
を実行すると
すべての例がパスするはずです。
冗長な構文を使用したルート仕様のパス
次の内容で "spec/routing/widgets_routing_spec.rb" という名前のファイルがあるとします:
require "rails_helper"
RSpec.describe "routes for Widgets", type: :routing do
it "routes /widgets to the widgets controller" do
expect(:get => "/widgets").
to route_to(:controller => "widgets", :action => "index")
end
end
rspec spec/routing/widgets_routing_spec.rb
を実行すると
すべての例がパスするはずです。
存在しないルートのルート仕様(失敗する)
次の内容で "spec/routing/widgets_routing_spec.rb" という名前の ファイルがあるとします:
require "rails_helper"
RSpec.describe "routes for Widgets", type: :routing do
it "routes /widgets/foo to the /foo action" do
expect(get("/widgets/foo")).to route_to("widgets#foo")
end
end
rspec spec/routing/widgets_routing_spec.rb
を実行すると
出力に "1 failure" が含まれるはずです。
ショートカット指定子を使用した名前空間付きルートのルート仕様
次の内容で "spec/routing/admin_routing_spec.rb" という名前のファイルがあるとします:
require "rails_helper"
RSpec.describe "routes for Widgets", type: :routing do
it "routes /admin/accounts to the admin/accounts controller" do
expect(get("/admin/accounts")).
to route_to("admin/accounts#index")
end
end
rspec spec/routing/admin_routing_spec.rb
を実行すると
すべての例がパスするはずです。
冗長な指定子を使用した名前空間付きルートのルート仕様
次の内容で "spec/routing/admin_routing_spec.rb" という名前のファイルがあるとします:
require "rails_helper"
RSpec.describe "routes for Widgets", type: :routing do
it "routes /admin/accounts to the admin/accounts controller" do
expect(get("/admin/accounts")).
to route_to(:controller => "admin/accounts", :action => "index")
end
end
rspec spec/routing/admin_routing_spec.rb
を実行すると
すべての例がパスするはずです。