2015-09-16 2 views
0

Я продолжаю получать ошибку маршрутизации при тестировании приложения Rails 3.0 с помощью Rspec 3. Он не может определить маршрут, который я использую для моего запроса на получение. Вот что мои файлы выглядеть следующим образом:Rspec не может найти маршрут в контрольном тесте

routes.rb

resources :proficiency_tests do 
    member do 
    resource :lag_components, only: [:edit, :update] 
    end 
end 

работает грабли: маршруты возвращается:

edit_lag_components GET /proficiency_tests/:id/lag_components/edit(.:format) {:action=>"edit", :controller=>"lag_components"} 
    lag_components PUT /proficiency_tests/:id/lag_components(.:format)   {:action=>"update", :controller=>"lag_components"} 

контроллер находится в:

app 
|---controllers 
    |---lag_components_controller.rb 

Ничего особенного о том, контроллер настроен.

спецификации в:

spec 
    |---controllers 
     |---lag_components_controller.rb 

тесты настроены так:

требуют 'spec_helper'

describe LagSubmissionsController do 
    describe 'GET #edit' do 
    let(:proficiency_test) { create :proficiency_test } 

    it 'redirects' do 
     *tests*  
    end 
    end 
end 

Вот что я пытался, и какие сообщения об ошибках были :

get(:edit, id: proficiency_test.id) 
# => No route matches {:id=>11259, :controller=>"lag_submissions", :action=>"edit"} 

get(:edit, id: proficiency_test.id, use_route: :edit_lag_components) 
# => No route matches {:id=>11260, :controller=>"lag_submissions", :action=>"edit"} 

get("/proficiency_tests/#{proficiency_test.id}/lag_components/edit") 
# => No route matches {:controller=>"lag_submissions", :action=>"/proficiency_tests/11258/lag_components/edit"} 

Последний является особенно интригующим, потому что это точный маршрут я использую в браузере для визуализации edit страницы:

enter image description here

Кто-нибудь знает, что происходит и почему она не может найти этот маршрут? К сожалению, это старое приложение, и я не могу изменить маршруты.

+1

Вы пишете rspec для неправильного контроллера –

ответ

1

Маршрут определяется как lag_components, но ваш контроллер называется LagSubmissions. Имя ресурса должно совпадать с именем контроллера - поэтому измените имя контроллера на LagComponentsController.

+0

О, мужчина! Так просто. Спасибо. –

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