【问题标题】:Rspec error: undefined local variable or method `cookies' for #<RSpec in the model for Sign_in methodRspec 错误:模型中用于 Sign_in 方法的 #<RSpec 的未定义局部变量或方法“cookies”
【发布时间】:2013-10-21 09:34:32
【问题描述】:

我没有在我的应用程序中使用任何 gem 进行身份验证...所以我的登录方法看起来像这样

def sign_in(user)
 remember_token = User.new_remember_token
 cookies[:remember_token] = remember_token
 user.update_attribute(:remember_token, User.encrypt(remember_token))
 self.current_user = user
end

我在 app/helpers/session_helper.rb 和 spec/support/helpers/session_module.rb 下都有这个 我需要在我的模型规范中调用 sign_in(user)... 我收到错误 undefined local variable or method `cookies' for

【问题讨论】:

    标签: ruby-on-rails cookies rspec ruby-on-rails-4


    【解决方案1】:

    cookie 哈希仅在 RSpec 的控制器测试中可用。您可以通过将 type: :request 添加到您的上下文来告诉您的规范假装它们是控制器规范,如下所示:

    describe 'something that requires cookies', type: :request do
       it { expect(cookies[:remember_token]).to be_nil } // now the variable is defined as nil.
    end
    

    也就是说,让您的模型知道有关登录的信息让我感到惊讶。这种跨范围测试通常属于一个特性。

    【讨论】:

      【解决方案2】:

      模型规范不设置测试请求上下文。所以你没有饼干伙计!

      在这里使用存根或模拟。

      【讨论】:

        猜你喜欢
        • 2014-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多