2016-08-08 10 views
2

Rails(4.1.16)とRspec(3.5.1)を使用して足場を作りました。このエラーを出力rspec-railsで生成されたスペックがルーティング例外のために失敗するのはなぜですか?

describe "GET #show" do 
    it "assigns the requested team as @team" do 
    team = Team.create! valid_attributes 
    get :show, params: {id: team.to_param}, session: valid_session 
    expect(assigns(:team)).to eq(team) 
    end 
end 

それは、このテストを生成

TeamsController GET #show assigns the requested team as @team 
Failure/Error: get :show, params: {id: team.to_param}, session: valid_session 

ActionController::UrlGenerationError: 
    No route matches {:action=>"show", :controller=>"teams", :params=>{:id=>"82"}, :session=>{}} 

私はすなわち、getにパラメータにキーを削除する場合:

get :show, {id: team.to_param}, valid_session 

テストを大丈夫です。

ジェネレータテンプレート(rspec-rails?)を定義する宝石と、なぜこのエラーが発生するのかよくわかりません。この問題を理解していただければ幸いです。ありがとう。 (RSpecのレールが付属していますrspec:scaffold、)

答えて

3

ジェネレータは、レール4と互換性がありませんこれは、(そのブログ記事の最後のセクションを参照してください)the syntax required by Rails 5でテストを生成している私は、これはRSpecのレールのバグだと思います、RSpecのレールので、3.5はRailsの4とそうでない場合は互換性があります(私は一緒に自分自身をこれらのバージョンを使用しています;私は発電機を使用していない)

RSpecのレールは、その1つの回避策を使用することです、changed to use the Rails 5 syntaxin rspec-rails 3.5.0.beta4ましたrspecとrspec-rails 3.4 - 新しいバージョンには、Rails 5と同様にRails 4と同じくらい便利なフィーチャーとフィックスがあるので、それほど素晴らしいものではありません。別の回避策は、手動でジェネレータの出力を修正することです。

+0

恐ろしい答えです。ありがとう。 –

関連する問題