current_user 在重定向时设置为 nil(会话丢失?)
current_user set to nil on redirect (session lost?)
配置
使用 Rails 5.1
和 Vue.js 2.5
的 Webpacker 应用程序
我已经尝试诊断这个错误 3 天了,但我已经束手无策了。我已经开始使用标准 selenium-webdriver
使用 Capybara
添加系统测试。
当我尝试访问可验证的路由时出现问题,例如,用户设置:
RSpec.describe 'home page', type: :system do
before(:context) do
WebMock.disable_net_connect!(allow_localhost: true)
end
after do
Warden.test_reset!
end
context 'when logged in' do
context 'as an average user' do
before do
@profile = create(:profile)
@user = @profile.user
@user.update(confirmed_at: Time.now)
login_as(@user, scope: :user)
end
it 'redirects to Account Settings page after pressing Account Settings' do
visit '/'
find('.profile-menu').hover
find('.settings').click
expect(page).to have_content 'Account Settings'
end
end
end
end
这不是 link 并且在我的 .vue
文件中处理,它只是重定向到我需要的路径 location.href = "/users/edit";
当我在根页面上时,我已登录,current_user
returns 用户和一切都很好。但是一旦我按下那个 link,它就会在我被重定向到标准 Devise
登录页面时在某个时候被重置。
如果我直接转到该页面 visit '/users/edit
,但是 current_user
已设置并且一切正常。
这是我的测试设备设置:
require 'devise'
RSpec.configure do |config|
config.include Warden::Test::Helpers
end
如果您需要一些额外信息,请告诉我,我想我已经提供了所有关键信息,但可能遗漏了一些信息。
我似乎已经解决了这个问题。我已经尝试了 中提到的几件事。据我所知,修复它的是什么修复了我的配置:
RSpec.configure do |config|
config.include Warden::Test::Helpers
end
到
RSpec.configure do |config|
config.include Devise::Test::IntegrationHelpers, type: :system
end
这也让我放弃了:
after(:each) do
Warden.test_reset!
end
在我所有的测试中。我已经 运行 进行了相当多的测试并且它们不再失败,所以我现在假设这确实已经修复。
配置
使用 Rails 5.1
和 Vue.js 2.5
我已经尝试诊断这个错误 3 天了,但我已经束手无策了。我已经开始使用标准 selenium-webdriver
使用 Capybara
添加系统测试。
当我尝试访问可验证的路由时出现问题,例如,用户设置:
RSpec.describe 'home page', type: :system do
before(:context) do
WebMock.disable_net_connect!(allow_localhost: true)
end
after do
Warden.test_reset!
end
context 'when logged in' do
context 'as an average user' do
before do
@profile = create(:profile)
@user = @profile.user
@user.update(confirmed_at: Time.now)
login_as(@user, scope: :user)
end
it 'redirects to Account Settings page after pressing Account Settings' do
visit '/'
find('.profile-menu').hover
find('.settings').click
expect(page).to have_content 'Account Settings'
end
end
end
end
这不是 link 并且在我的 .vue
文件中处理,它只是重定向到我需要的路径 location.href = "/users/edit";
当我在根页面上时,我已登录,current_user
returns 用户和一切都很好。但是一旦我按下那个 link,它就会在我被重定向到标准 Devise
登录页面时在某个时候被重置。
如果我直接转到该页面 visit '/users/edit
,但是 current_user
已设置并且一切正常。
这是我的测试设备设置:
require 'devise'
RSpec.configure do |config|
config.include Warden::Test::Helpers
end
如果您需要一些额外信息,请告诉我,我想我已经提供了所有关键信息,但可能遗漏了一些信息。
我似乎已经解决了这个问题。我已经尝试了
RSpec.configure do |config|
config.include Warden::Test::Helpers
end
到
RSpec.configure do |config|
config.include Devise::Test::IntegrationHelpers, type: :system
end
这也让我放弃了:
after(:each) do
Warden.test_reset!
end
在我所有的测试中。我已经 运行 进行了相当多的测试并且它们不再失败,所以我现在假设这确实已经修复。