2015-07-21 2 views
1

Я использую пользовательский Разрабатывает 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 все дни. Что я делаю не так? Или как протестировать настраиваемый контроллер сеанса? Или как войти в систему - другие - тесты с использованием пользовательского сеанса разработки?

ответ

0

Использование

@controller.current_custom_user 

вместо

assigns(:current_custom_user) 

, кажется, работает.

1

вместо:

описывают CustomSessionsController, Тип =>: контроллер делать

попробовать:

RSpec.describe CustomSessionsController, Тип =>: контроллер делать

Надеюсь, что это сработает!

+0

Спасибо, но, к сожалению, это не решило мою проблему. – qqbenq

+0

В вашей спецификации нет запроса в действии. Взгляните на: https://relishapp.com/rspec/rspec-rails/v/3-3/docs/controller-specs, чтобы увидеть, как он работает правильно. – lucianosousa