我想继续使用同一个 session ,我的意思是 Rails 在各种 Test::Unit
之间的 session 使用 Capybara 的集成测试。 Capybara::Session
对象在所有测试中都是相同的,因为它被重复使用,但是当我在另一个测试中访问另一个页面时,我会立即注销。
挖掘我发现capybara_session.driver.browser.manage.all_cookies
在一个测试和下一个测试之间被清除。
有什么想法吗?或者为什么?或如何避免?
为了解决这个问题,我将 cookie 保存在一个类变量中,稍后通过运行重新添加:
capybara_session.driver.browser.manage.add_cookie(@@cookie)
它似乎工作,cookie在那里,但是当有请求时,cookie被另一个替换,所以它没有效果。
有没有其他方法可以实现这一目标?
最佳答案
在与页面交互的 capybara 代码之后添加以下内容:
Capybara.current_session.instance_variable_set(:@touched, false)
or
page.instance_variable_set(:@touched, false)
如果这不起作用,这些可能会有所帮助:
https://github.com/railsware/rack_session_access
http://collectiveidea.com/blog/archives/2012/01/05/capybara-cucumber-and-how-the-cookie-crumbles/
关于ruby-on-rails - 如何在测试之间重复使用 Capybara session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12605692/