Tag: capybara csrf

Rails – 与集成测试和Capybara失去会话 – CSRF相关?

我正在使用Rails 3.1.0.rc4,我正在与capybara的新类似DSL和Rspec进行集成测试(使用Devise身份validation) 我遇到的问题是,当我运行集成测试时,来自capybara的机架测试驱动程序似乎完全失去了用户的登录会话,事实上,会话似乎完全清除了。 经过几天的调试,我完全不知道为什么。 逐行通过中间件堆栈,我相信我已经将问题排除在导致这种情况的ActiveRecord::SessionStore中。 我在这里读到如果无法validationCSRF令牌,Rails将清除会话,这让我相信我的配置错误,并且由于某种原因,这个测试没有正确validationCSRF令牌。 这是我在/ initializers目录中的session_store.rb中的内容: MyApp::Application.config.session_store :active_record_store 知道有关铁路CSRF保护的人是否有任何线索可以解释为什么会这样? 此外,还有一些注意事项: 我试图测试的东西实际上在浏览器本身内工作,只有这一个测试正在放弃会话 在将操作URL提交到另一个服务器的表单后,会话似乎被删除。 我正在使用VCR gem来捕获测试中对此外部服务器的请求/响应,虽然我认为我已经将外部请求作为问题,但这可能与CSRF令牌没有进行身份validation直接相关,从而清理会话。 涉及登录/使用会话的其他测试不会丢弃会话 任何人都可以给我任何关于这里发生了什么的线索,以及为什么一个测试似乎随意地放弃了它的会话而对我失败了? 我做了很多调试,并尝试了我能想到的一切。