2016-08-08 1 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?)을 정의했는지, 왜이 오류가 발생하는지 확실하지 않습니다. 이 문제를 이해하는 데 도움을 주시면 감사하겠습니다. 감사.

답변

3

생성기 (rspec-rails와 함께 제공되는 rspec:scaffold)는 레일스 4와 호환되지 않는 the syntax required by Rails 5 (블로그 게시물의 마지막 섹션 참조)으로 테스트를 생성합니다.이 버그는 rspec-rails의 버그라고 생각합니다. , RSpec에 레일 이후 3.5 레일 (4)와 달리 호환 (I 함께 자신을 해당 버전을 사용하고 있습니다,. 난 그냥 생성기를 사용하지 않은)

RSpec에 레일은 그래서 하나의 해결 방법은 사용하는 것입니다, changed to use the Rails 5 syntaxin rspec-rails 3.5.0.beta4했다 rspec 및 rspec-rails 3.4 - Rails 5와 마찬가지로 Rails 4와 마찬가지로 유용한 최신 버전의 기능과 수정 사항이 있으므로 좋지 않습니다. 또 다른 해결 방법은 수동으로 생성기 출력을 수정하는 것입니다.

+0

끔찍한 답변입니다. 감사. –