2016-08-08 5 views
2

Я создал эшафот с Rails (4.1.16) и Rspec (3.5.1).Почему мой rspec-rails сгенерированный spec не работает из-за исключения маршрутизации?

Это сгенерирована тест:

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:scaffold, который поставляется с RSpec реек) генерирует тесты с the syntax required by Rails 5 (см последний раздел этого сообщения в блоге), который не совместим с Rails 4. Я думаю, что это ошибка в RSpec рельсах , так как RSpec реек 3,5 иначе совместим с Rails 4. (я использую эти версии вместе себя,. Я просто не использовал генератор)

RSpec рельсы был changed to use the Rails 5 syntaxin rspec-rails 3.5.0.beta4, поэтому один обходной путь заключается в использовании rspec и rspec-rails 3.4 - не так приятно, так как новые версии имеют функции и исправления, которые так же полезны для Rails 4, как и для Rails 5. Другим обходным решением является вручную исправление вывода генератора так же, как и вы.

+0

Удивительный ответ. Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^