与Devise和Capybara的路由约束监​​督会话

时间:2017-04-19 20:14:30

标签: ruby-on-rails ruby devise routing

我正在使用Capybara进行一些功能测试并添加了路由约束。

以下是代码片段:

class LenderConstraint
    def matches?(request)
        user_cookie = request.session.fetch('warden.user.user.key')
    end
end

这可以正常工作,但在测试环境中无法使用。一切都在测试中正常工作,直到添加了这个约束。什么是使这项工作最有效的方法?

更新

当我运行单独的测试时它会起作用,但是当我运行套件时它不起作用。

更新2

我调试了会话,问题与warden.user.user.key未正确设置有关。我打电话的时候:

用户ID为1的

login_as(@user, scope: :user)request.session.fetch('warden.user.user.key')的值返回2,这是系统在测试套件中登录的第一个用户的ID。

1 个答案:

答案 0 :(得分:0)

我想你可能想在测试之间重置会话......

Capybara.reset_sessions!

请参阅https://stackoverflow.com/a/26734459/316729