我有一个带有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
如何让会话继续通过给定的规范?
答案 0 :(得分:1)
Capybaras using_session不会引用您询问的会话。它指的是Capybara使用的浏览器或浏览器/应用程序对实例,如果您需要在测试时同时将两个不同的用户登录到应用程序(聊天,实时状态更新等),则通常会使用它。
使用基于cookie的会话时,您需要确保最初访问的原始(子)域(您设置事务ID的位置)和重定向到的域是相同的(至少达到会话cookie设置的级别) )。如果它们不是会话cookie将不再对重定向请求有效(并且不会被发送),因此事务ID不可用。