2017-04-07 14 views
1

내 스펙이 존재하지 않습니다.Authlogic 세션은 즉시

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를 방문 할 때, 성공의 로그인 페이지가 동작하더라도 로그인 한 사용자가없는 것처럼 것입니다 경우 visit new_search_path 전에 sleep(1) 전화를 추가하면 정상적으로 작동합니다.

왜 이런 일이 발생하는지 알고 계십니까?

저는 authlogic, capybara 및 selenium을 사용하고 있습니다.

답변

2

트리거 된 동작 click_on은 비동기 적으로 발생할 수 있습니다. 따라서 visit을 즉시 수행하면 로그인 요청이 중단되고 세션 쿠키가 설정되지 않을 수 있습니다. 이를 해결하려면 로그인이 성공했음을 나타내는 페이지 텍스트/내용을 확인해야합니다. 예 :

expect(page).to have_text 'You are now logged in'