ruby-on-rails - 设计测试助手 - sign_in 不起作用

标签 ruby-on-rails testing devise

出于某种原因,我无法让设计辅助方法 sign_in 工作。 current_user 一直为空。知道问题出在哪里吗?

测试:

  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

感谢任何帮助。谢谢!

最佳答案

如果您在User 模型(或其他设计可验证模型)中包含Confirmable 模块,那么您创建的测试@user必须确认 sign_in 才能生效:

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

(我知道这不是您的问题,但也许其他读者会从中受益。)

关于ruby-on-rails - 设计测试助手 - sign_in 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12226502/

相关文章:

ruby-on-rails - 具有多态资源的 ruby​​ geocoder gem

ruby-on-rails - 事件存储 : get S3 key (not Rails blob key)

java - Spring 测试事务注释不起作用

testing - 如何在 Dart/Flutter 中测试 void 静态方法?

ruby-on-rails - 找不到 JavaScript 运行时。有关可用运行时列表,请参阅 https ://github. com/sstephenson/execjs

ruby-on-rails - 根据另一哈希数组的键值更新一个哈希数组

C# 单元测试 : UnauthorizedAccessException when using API that uses network

ruby-on-rails - Ruby On Rails Rolify + CanCanCan + Devise 允许用户只编辑他们的帖子

ruby-on-rails - 检查 current_user 是否是资源的所有者并允许编辑/删除操作

ruby-on-rails - 为什么 Devise/Omniauth 会向 URL 添加垃圾?