加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:15:24 所属栏目:百科 来源:网络整理
导读:我想继续使用相同的会话,我的意思是Rails在使用Capybara的各种Test :: Unit集成测试之间的会话. Capybara :: Session对象在重新使用的所有测试中是相同的,但是当我在另一个测试中访问另一个页面时,我立即注销. 挖掘我发现capybara_session.driver.browser.ma
我想继续使用相同的会话,我的意思是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/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读