Ruby on rails 从RSpec 2.11升级到2.12

Ruby on rails 从RSpec 2.11升级到2.12,ruby-on-rails,rspec,capybara,Ruby On Rails,Rspec,Capybara,我正在升级RSpec,特别是在两个元素上有问题。我,特别是,我对这种方法有困难 def sign_in(user) visit root_path fill_in "Email", with: user.email fill_in "Password", with: user.password click_button "Sign in" # Sign in when not using Capybara as well. cookies[:remember_token]

我正在升级RSpec,特别是在两个元素上有问题。我,特别是,我对这种方法有困难

def sign_in(user)
  visit root_path
  fill_in "Email", with: user.email
  fill_in "Password", with: user.password
  click_button "Sign in"
  # Sign in when not using Capybara as well.
  cookies[:remember_token] = user.remember_token
end
在那里我得到了一个错误

undefined local variable or method `cookies' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_3::Nested_3::Nested_1:0x79b9c90>
给予

的未定义方法“put”#

对于第一个错误,我试图遵循,但我似乎不知道如何从Capybara页面获取RSpec响应对象(调用
单击按钮的结果)。对于第二个错误,我真的不知所措。看起来RSpec刚刚删除了
put
功能,我不知道如何取回它。

这不是RSpec的问题,而是请求/集成与功能/控制器规范的问题

Capybara,或者更具体地说,“request”或“integration”规范不提供对请求方法(如put()或get())的访问-这些仅在活动规范/controllers/的控制器规范中存在。当您直接测试控制器时,cookies[]散列也是如此


作为解决方法。

我刚刚尝试使用上述put方法在spec/controllers中创建一个新的spec,但现在我收到一个错误消息,说用户路径不可用。你知道如何将两者合并吗?这是什么时候改变的?它在RSpec和Capybara的早期版本中工作。
before {put user_path(user)}
undefined method `put' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_3::Nested_1::Nested_2::Nested_3:0x7939830>