メインコンテンツまでスキップ

be_routable マッチャー

be_routable マッチャーは、指定したルートがルーティング可能でないことを示すために should_not と共に使用されます。このマッチャーは、ルーティングスペック(spec/routing 内)およびコントローラースペック(spec/controllers 内)で利用できます。

ルーティング可能なルートがルーティング不可能であることを指定する(失敗)

次の内容で "spec/routing/widgets_routing_spec.rb" という名前のファイルが存在するとします。

require "rails_helper"

RSpec.describe "routes for Widgets", type: :routing do
it "does not route to widgets" do
expect(:get => "/widgets").not_to be_routable
end
end

rspec spec/routing/widgets_routing_spec.rb を実行すると、

出力に "1 example, 1 failure" が含まれるはずです。

ルーティング不可能なルートがルーティング不可能であることを指定する(合格)

次の内容で "spec/routing/widgets_routing_spec.rb" という名前のファイルが存在するとします。

require "rails_helper"

RSpec.describe "routes for Widgets", type: :routing do
it "does not route to widgets/foo/bar" do
expect(:get => "/widgets/foo/bar").not_to be_routable
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 to /widgets" do
expect(:get => "/widgets").to be_routable
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 to widgets/foo/bar" do
expect(:get => "/widgets/foo/bar").to be_routable
end
end

rspec spec/routing/widgets_routing_spec.rb を実行すると、

出力に "1 example, 1 failure" が含まれるはずです。

コントローラースペックで be_routable を使用する

次の内容で "spec/controllers/widgets_controller_spec.rb" という名前のファイルが存在するとします。

require "rails_helper"

RSpec.describe WidgetsController, type: :controller do
it "routes to /widgets" do
expect(:get => "/widgets").to be_routable
end
end

rspec spec/controllers/widgets_controller_spec.rb を実行すると、

すべての例が合格するはずです。