我希望能够在注销后测试会话无效。为此,我想检查登录后,会话存在,我想获得会话详细信息。注销后会话不再存在。
我能想到的一种方法是在登录后检查会话是否存在于redis中,并且在注销后在redis中不存在。但我不知道该怎么做。
如果有任何其他方法可以尝试,请告诉我。
这是我到目前为止:
scenario "session is invalidated on logout", js:true do
login_page.login('[email protected]', 'usfyguysgugy')
@user = User.find_by(email: '[email protected]')
page.get_rack_session
end
但这会给出错误:
Failure/Error: page.get_rack_session
Capybara::ElementNotFound:
Unable to find visible xpath "//body/pre"
我也尝试过使用redis.keys('*'),但没有成功。
任何有关如何访问会话的线索都会有所帮助。
您正在编写功能规范,您不应该直接在这些类型的测试中访问DB / redis / etc。功能测试都是关于测试用户可以做什么和不能做什么的,所以要验证注销是否结束会话,验证注销链接不再存在,并且现在存在登录链接。就像是
scenario "session is invalidated on logout", js:true do
login_page.login('[email protected]', 'usfyguysgugy')
click_link 'logout'
expect(page).not_to have_link('logout')
expect(page).to have_link('login')
end
如果您确实想要验证存储在redis中的会话的详细信息,那么可以在控制器或请求规范中完成。