Rspec路由规范失败,param id被反转?

Rub*_*tic 4 specs rspec ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我的rspec路由规范给出了不清楚的错误.在预期的params v/s中,id param处于反向位置的真实参数.为什么以及如何解决?

require "spec_helper"

describe GameController do
  describe "routing" do

    game = FactoryGirl.create(:game)

    it "routes to #show" do
      get("/game/1").should route_to("game#show", :id => 1)
    end

  end
end
Run Code Online (Sandbox Code Playgroud)

抛出错误:

  1) gameController routing routes to #show
     Failure/Error: get("/game/1").should route_to("game#show", :id => 1)
       The recognized options <{"action"=>"show", "controller"=>"game", "id"=>"1"}> did not match <{"id"=>1, "controller"=>"game", "action"=>"show"}>, difference:.
       <{"id"=>1, "controller"=>"game", "action"=>"show"}> expected but was
       <{"action"=>"show", "controller"=>"game", "id"=>"1"}>.
     # ./spec/routing/game_routing_spec.rb:11:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

Dyl*_*kow 9

Rails将参数解析为字符串,而不是整数,因此params[:id]实际上是分配"1"而不是1.

尝试期待一个字符串:

get("/game/1").should route_to("game#show", :id => "1")
Run Code Online (Sandbox Code Playgroud)