由于某种原因,我无法使设计助手方法sign_in正常工作。 current_user始终为null。知道可能是什么问题吗?

测试:

  before :each do
    @user = FactoryGirl.create :user
    sign_in @user
  end

  describe "GET index" do
    it "assigns all subscribers as @subscribers" do
      subscriber = @user.subscribers.create! valid_attributes
      get :index
      assigns(:subscribers).should eq([subscriber])
    end
  end

执行:
  def index
    @subscribers = current_user.subscribers.all    <------- ERROR

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @subscribers }
    end
  end

Error:
 NoMethodError:
       undefined method `subscribers' for nil:NilClass

任何帮助表示赞赏。谢谢!

最佳答案

根据您的代码判断,您似乎已经解决了这个问题。我以前曾经发生过这种情况,由于某种原因,它每次都会吸引我。

开箱即用的 Controller 规范的rspec/rails支架不适用于Devise::TestHelpers。

get :index, {}, valid_session

valid_session调用将覆盖Devise设置的 session 内容。去掉它:
get :index, {}

这应该工作!

关于ruby-on-rails - Devise Test Helper-sign_in不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12226502/

10-15 09:09