未通过api回调保留Capybara会话

时间:2017-12-05 17:10:28

标签: ruby-on-rails capybara

我有一个带有capybara 2.13功能规格的轨道5应用程序。一个规范完成了一个由三部分组成的事务流,其中包含一个重定向URL到应用程序中的回调路径。我将会话中的事务ID保存为session[:current_transaction_id],然后在处理回调时使用它来查找事务。这在开发中运行良好,但在使用capybara进行测试时,session散列缺失:current_transaction_id

我没有成功地尝试包装我的规格,如中所述 https://github.com/teamcapybara/capybara#using-sessions

Capybara.using_session("User session") do
  # log in and complete a transaction
end

如何让会话继续通过给定的规范?

1 个答案:

答案 0 :(得分:1)

Capybaras using_session不会引用您询问的会话。它指的是Capybara使用的浏览器或浏览器/应用程序对实例,如果您需要在测试时同时将两个不同的用户登录到应用程序(聊天,实时状态更新等),则通常会使用它。

使用基于cookie的会话时,您需要确保最初访问的原始(子)域(您设置事务ID的位置)和重定向到的域是相同的(至少达到会话cookie设置的级别) )。如果它们不是会话cookie将不再对重定向请求有效(并且不会被发送),因此事务ID不可用。