ruby-on-rails – 如何在测试之间重新使用Capybara会话?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何在测试之间重新使用Capybara会话?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想继续使用相同的会话,我的意思是Rails在使用Capybara的各种Test :: Unit集成测试之间的会话. Capybara :: Session对象在重新使用的所有测试中是相同的,但是当我在另一个测试中访问另一个页面时,我立即注销.

挖掘我发现capybara_session.driver.browser.manage.all_cookies在一个测试和下一个测试之间被清除.

任何想法怎么样?还是为什么?还是怎么避免呢?

尝试解决这个问题,我将Cookie保存在一个类变量中,然后通过运行以下方法重新添加

capybara_session.driver.browser.manage.add_cookie(@@cookie)

它似乎工作,cookie在那里,但是当有请求时,cookie被替换为另一个,所以它没有效果.

有没有其他方式实现这一点?

解决方法

在与页面交互的水瓶座代码之后添加以下内容
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相关文章