2011-02-28 80 views
1

的Rails版本3.0.4找到路徑和Ruby 1.9.2的Rails不能在功能測試

我使用的色器件的寶石,並有我的應用程序設置,使用戶必須登錄到執行任何行動。在寫我的功能測試時,我發現所有的測試都拋出了相同的錯誤。

`method_missing': undefined method `new_user_session_path' 

這是奇怪的,如果我rake routes我可以看到

new_user_session GET /devise/login(.:format)  {:action=>"new", :controller=>"devise/sessions"} 

我還可以確認的是,當我運行應用程序,所有的link_to的工作中,使用這條道路的時候。

是否有什麼特殊的我必須做的某個控制器的測試看到其他路線?

的routes.rb

Nge::Application.routes.draw do 
    resources :companies 
    resources :users 
    devise_for :users, :path => "devise", :path_names => { :sign_in => 'login', :sign_out => 'logout', :password => 'secret', :confirmation => 'verification', :unlock => 'unblock', :registration => 'register', :sign_up => 'cmon_let_me_in' } 
... 
end 

測試/功能/ companies_controller_test.rb

require 'test_helper' 
class CompaniesControllerTest < ActionController::TestCase 
    context "When a user is NOT signed in" do 
    [:index, :new].each do |action| 
     context "and GET ##{action.to_s}" do 
     setup {get action} 
     should set_the_flash.to(/must sign-up/) 
     should redirect_to(new_user_session_path) 
     end 
    end 
    ... 
    end 
end 

回答

0

你可以嘗試重新排序的路由就可以使色器件的路線是第一?

所以routes.rb中文件將是這個樣子 -

 

Nge::Application.routes.draw do 
    resources :companies 
    devise_for :users, :path => "devise", :path_names => { :sign_in => 'login', :sign_out => 'logout', :password => 'secret', :confirmation => 'verification', :unlock => 'unblock', :registration => 'register', :sign_up => 'cmon_let_me_in' } 
    resources :users 
... 
end 
 
+0

試了一下,沒有工作。我試圖確保沒有任何路徑發生衝突,因爲它不符合它們的順序。謝謝。 – 2011-02-28 15:36:38

1

您需要添加

@request.env["devise.mapping"] = Devise.mappings[:user] 

某處在您的測試,可能是在設置方法。

見討論here.