Ruby on rails 控制器上的Rspec和设备';您正在被重定向';

Ruby on rails 控制器上的Rspec和设备';您正在被重定向';,ruby-on-rails,rspec,devise,Ruby On Rails,Rspec,Devise,我发现关于这个主题的帖子太少了,所以我决定再发一次 我只是想测试我的控制器,它使用design和rspec 我添加了rails_helper.rb config.include Devise::TestHelpers, :type => :controller 我写了这个测试: describe AlbumsController do render_views let(:user) { User.create!(email: "rspec@example.com", pa

我发现关于这个主题的帖子太少了,所以我决定再发一次

我只是想测试我的控制器,它使用design和rspec

我添加了rails_helper.rb

config.include Devise::TestHelpers, :type => :controller
我写了这个测试:

describe AlbumsController do
    render_views
    let(:user) { User.create!(email: "rspec@example.com", password: "password") }
    before(:each) do
        sign_in(user)
    end
    it "should have a current_user" do
        subject.current_user.should_not be_nil
    end
    describe "get ALBUM index" do
        describe "for a registred user" do
            it "should => index page" do
                get :index
                response.should have_selector('div#photos')
            end
        end
    end
end
我的索引方法真的被执行了!我添加了一些看跌期权来跟踪执行。 subject.current_用户不为空。一切都应该是好的

但我得到一个信息:

<html><body>You are being <a href=\"http://test.host/main\">redirected</a>.</body></html>
您正在被删除。
在我的索引操作中没有特定的重定向到或呈现方法。它只是呈现默认值

这里有什么问题

我使用的是gem'designe',“2.2.8”和gem'rails',“3.2.1”。我知道它很旧。我尝试在迁移到Rails 4之前添加测试:-/

编辑1:

当前用户在我的索引方法中有效。
这意味着这不是一个设计问题。但是呈现的视图尝试使用这种构造

  before(:each) do
    @request.env["devise.mapping"] = Devise.mappings[:user]
    sign_in user
  end

来源:

请正确设置规范代码的格式我想知道是否真的呈现了响应视图?可能我得到这个页面“你被重定向了”,因为视图没有呈现。很可能你根本没有登录。没有解决问题(我使用的是gem'designe',“2.2.8”和gem'rails',“3.2.1”),这是旧的我知道,用户记录有效吗?确认了吗?检查一下。我觉得身份验证还可以,因为我在索引操作中添加了一些put“hello”,它们都被执行了。在索引操作的最后,我让该方法呈现defaut索引htmlgreat idea Stanislav。我该怎么做?然后提供控制器和应用程序的控制器代码