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'