2

我正在升级 RSpec,特别是遇到了 2 个元素的问题。我正在关注本教程,具体来说,我在使用该方法时遇到了问题

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>

另外我还有另一个错误

before {put user_path(user)}

undefined method `put' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_3::Nested_1::Nested_2::Nested_3:0x7939830>

首先,错误,我试图按照RSpec 文档中的步骤操作,但我似乎无法弄清楚如何从 Capybara 页面获取 RSpec 响应对象(调用的结果click_button)。对于第二个错误,我真的很茫然。看起来 RSpec 刚刚删除了该put功能,我不知道如何取回它。

4

1 回答 1

2

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

Capybara,或者更具体地说,“请求”或“集成”规范不提供对 put() 或 get() 等请求方法的访问 - 这些仅在实时规范/控制器/的控制器规范中。当您直接测试控制器时,cookie[] 哈希和其他可用变量也是如此。

有关解决方法,请参阅此要点

于 2013-01-31T03:30:50.200 回答