Rails не может найти маршрут в функциональном тесте - PullRequest
1 голос
/ 28 февраля 2011

Rails версии 3.0.4 и Ruby 1.9.2

Я использую гем devise и настроил свое приложение так, чтобы пользователь выполнил вход для выполнения любого действия. При написании своих функциональных тестов я обнаружил, что во всех тестах возникла одна и та же ошибка.

`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

Ответы [ 2 ]

1 голос
/ 11 августа 2012

Вам нужно добавить

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

где-то в вашем тесте, вероятно, в методе настройки.

Смотрите обсуждение здесь.

0 голосов
/ 28 февраля 2011

Можете ли вы попробовать изменить порядок маршрутов, чтобы сначала были разработаны маршруты?

Таким образом, файл rout.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...