集成测试中,在同一测试中的http请求之间重置登录会话



我正在将我们的应用程序从rails 6.1.7升级到7.0.4,遇到了一个错误,在每次http请求后,控制器中的会话都会重置,这在以前是没有发生过的这种情况只发生在测试环境中,而不发生在开发环境中

当用户登录并且我们已经完成身份验证时,我们设置以下内容:

def login_user!
session[:user_id] = @user.id
.....
end

当用户试图访问另一个链接时,我们会检查以下

def logged_in?
session[:user_id].present?
end

测试:


test 'updates locale' do
post login_path, params: { email: user.email, password: user.password }, as: :json
patch user_path(user), params: { user: { locale: 'en' } }, as: :json
end

通常,我使用第一行login_path来设置会话,这样我就可以测试这里提到的其他http请求。然而,在rails 7中的每次调用之后,会话似乎都被重置。当我执行第二个请求时,我得到以下错误:<ActionDispatch::Request::Session:0x25648 not yet loaded>

用于将来引用他人;这个错误是由于我使用的gemredis-session-store与redis版本5或更高版本以及fakeredis版本0.7 不兼容

最新更新