Capybara 中的 Authlogic 会话不会立即存在
Authlogic session in Capybara doesn't exist immediately
我的规格:
let(:user) { FactoryGirl.create(:user) }
context 'When user is logged in' do
scenario 'Log in' do
visit login_path
within '.new_user_session' do
fill_in 'username', with: user.email
fill_in 'password', with: user.password
click_on 'Log in'
end
visit new_search_path
expect(page).to have_text "Welcome #{user.name}!"
end
end
问题是当访问 new_search_path
时,即使登录成功,页面的行为就好像没有用户登录一样。如果我在 [= 之前添加一个 sleep(1)
调用13=],一切正常。
有人知道为什么会这样吗?
我正在使用 authlogic、capybara 和 selenium。
操作 triggered.by click_on
可以异步发生。因此,如果您在之后立即执行 visit
操作,可能会导致登录请求中止并且永远不会设置会话 cookie。要解决这个问题,您需要检查指示登录成功的页面 text/content。像
expect(page).to have_text 'You are now logged in'
我的规格:
let(:user) { FactoryGirl.create(:user) }
context 'When user is logged in' do
scenario 'Log in' do
visit login_path
within '.new_user_session' do
fill_in 'username', with: user.email
fill_in 'password', with: user.password
click_on 'Log in'
end
visit new_search_path
expect(page).to have_text "Welcome #{user.name}!"
end
end
问题是当访问 new_search_path
时,即使登录成功,页面的行为就好像没有用户登录一样。如果我在 [= 之前添加一个 sleep(1)
调用13=],一切正常。
有人知道为什么会这样吗?
我正在使用 authlogic、capybara 和 selenium。
操作 triggered.by click_on
可以异步发生。因此,如果您在之后立即执行 visit
操作,可能会导致登录请求中止并且永远不会设置会话 cookie。要解决这个问题,您需要检查指示登录成功的页面 text/content。像
expect(page).to have_text 'You are now logged in'