2012-08-13 2 views
0

에 따라 얻을 수 나는 내 시나리오에서 다음과 같습니다어떻게 webrat가 리디렉션

And I click the link Log out 
Then I should see the login page 

Log out 링크가 다시 페이지에서 로그에 리디렉션/LOG_OUT에 사용자를 보냅니다 클릭. Webrat은 "로그인"을 찾고 있지만 log_out 페이지가 비어 있기 때문에 실패하고 있습니다 (세션을 파괴하고 /를 리디렉션하는 codeigniter 함수입니다).

webrat을 읽어야하는 가장 좋은 방법은 무엇입니까? 리디렉션이 끝난 페이지?

답변

0

단순하지만 비효율적 인 방법은 리디렉션을 수행하는 데 걸리는 대략적인 시간 동안 잠을 추가하는 것입니다. 이 지연 네트워크에 관해서

When /^I wait for (\d+) seconds$/ do |time| 
    sleep time.to_i 
end 

And I click the link Log out 
And I wait for 5 seconds 
Then I should see the login page 

단계 정의는 그러나이 솔루션은 매우 취성, 당신의 대기 중 하나 너무 길거나 너무 짧은 수 있습니다. 더 나은 방법은 찾고있는 콘텐츠가 나타날 때까지 잠을 자도록하는 것입니다. 당신이 다른 단계의 대기를 사용하여 자신을 발견 할 경우

And I click the link Log out 
Then within 30 seconds, I should see the login page 

단계 정의는

Then /^within (\d+) seconds, I should see the login page$/ do |time| 
    sleep time.to_i until page.has_text? "Login" 
    page.should have_content "Login" 
end 

, 쉼표 후 단계의 나머지는 일반화 될 수있다.