我正在升级RSpec并特别遇到2个元素的问题。我是following this tutorial,具体来说,我遇到了方法
的问题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>
对于第一个错误,我试图遵循steps in the RSpec docs,但我似乎无法弄清楚如何从Capybara页面获取RSpec响应对象(调用click_button
的结果)。对于第二个错误,我真的很茫然。看起来RSpec刚刚删除了put
函数,我不知道如何取回它。
答案 0 :(得分:2)
这不是RSpec问题,而是请求/集成与功能/控制器规范问题。
Capybara,或者更具体的“请求”或“集成”规范不提供对put()或get()等请求方法的访问 - 这些只是在实时规范/控制器/的控制器规范中。当你直接测试控制器时,与cookies [] hash和other variables available相同。
See this gist进行解决方案。