Ruby on rails 4 使用RSpec测试定制设计会话控制器

Ruby on rails 4 使用RSpec测试定制设计会话控制器,ruby-on-rails-4,rspec,devise,rspec-rails,Ruby On Rails 4,Rspec,Devise,Rspec Rails,我正在使用自定义Desive SessionController: #custom_sessions_controller.rb class CustomSessionsController < Devise::SessionsController end 我想写一个简单的rspec测试: #custom_sessions_controller_spec.rb require 'rails_helper' describe CustomSessionsController, :type

我正在使用自定义Desive SessionController:

#custom_sessions_controller.rb
class CustomSessionsController < Devise::SessionsController
end
我想写一个简单的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
在my
rails\u helper.rb
中,存在以下行:

require 'devise'
...
RSpec.configure do |config|
  ...
  config.include Devise::TestHelpers, :type => :controller
  config.include Warden::Test::Helpers , :type => :controller
  ...
问题是测试中的
curr\u user
总是
nil
。我做错了什么?或者如何测试自定义Desive会话控制器?或者如何使用自定义设备会话登录-其他-测试?

而不是:

描述CustomSessionController,:type=>:controller do

尝试:

RSpec.descripe CustomSessionController,:type=>:controller do

希望它能起作用

使用

@controller.current_custom_user
而不是

assigns(:current_custom_user)

似乎有效。

谢谢,但不幸的是,这并没有解决我的问题。在您的规范中,操作中没有请求。请查看:以了解它如何正常工作。
assigns(:current_custom_user)