Я использую пользовательский Разрабатывает SessionsController:Тестирование контроллера пользовательского Разрабатывает сеанс работы с RSpec
#custom_sessions_controller.rb
class CustomSessionsController < Devise::SessionsController
end
В моем routes.rb завещанию настроен так:
#routes.rb
devise_for :custom_users, {
:singular => 'custom_user',
:class_name => 'CustomUser',
:path => "/",
:path_names => { :sign_in => 'login', :sign_out => 'logout' },
:controllers => { :sessions => "custom_sessions" }
}
Я хотел бы написать простой тест RSpec:
#custom_sessions_controller_spec.rb
require 'rails_helper'
describe CustomSessionsController, :type => :controller do
describe "login" do
before do
setup_controller_for_warden
@request.env["devise.mapping"] = Devise.mappings[:custom_user]
@my_user = FactoryGirl.create(:custom_user) # creates user with valid credentials
end
it "should succeed with valid credentials" do
sign_in @my_user
curr_user = assigns(:current_custom_user)
expect(curr_user).to eq(@my_user)
expect(response).to be_success
end
end
end
В моих rails_helper.rb
следующих строках присутствуют:
require 'devise'
...
RSpec.configure do |config|
...
config.include Devise::TestHelpers, :type => :controller
config.include Warden::Test::Helpers , :type => :controller
...
Проблема заключается в том, что curr_user
в тесте nil
все дни. Что я делаю не так? Или как протестировать настраиваемый контроллер сеанса? Или как войти в систему - другие - тесты с использованием пользовательского сеанса разработки?
Спасибо, но, к сожалению, это не решило мою проблему. – qqbenq
В вашей спецификации нет запроса в действии. Взгляните на: https://relishapp.com/rspec/rspec-rails/v/3-3/docs/controller-specs, чтобы увидеть, как он работает правильно. – lucianosousa