2015-09-16 104 views
0

在使用Rspec 3測試Rails 3.0應用程序時,我不斷收到路由錯誤。它無法檢測到我用於獲取請求的路由。下面是我的文件是這樣的: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

哦!很簡單。謝謝。 –