Rspec错误:Sign_in方法模型中#<RSpec的未定义局部变量或方法`cookies'

我的app中没有使用任何gem进行身份validation…所以我的sign_in方法看起来像这样

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)…我得到错误未定义的局部变量或方法` cookies’for

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 

也就是说,需要你的模特才能知道签到的惊喜。 这种跨范围测试通常属于一个function。

model规范没有设置测试请求上下文。 所以你没有没有cookies老兄!

在这里使用存根或模拟。