2012-05-22 2 views
4

여기 내가 일하고 있어요 테스트 케이스의로 리디렉션 :은 RSpec에와 카피 바라

it "should allow you to login" do 
    visit "/" 
    fill_in 'Email', :with => '[email protected]' 
    fill_in 'Pass', :with => 'password' 
    click_button 'Login' 
    current_url.should =~ /dashboard/ 
end 

이 특정 테스트는 실패합니다. 내가 알고 싶습니다. 로그인 할 수 없기 때문에 실패하는 것입니다. 그러나 current_url을 너무 빨리 검사하고 있기 때문에 실패합니다. click_button 작업이 실행되고 레일즈가 사용자를 리디렉션 할 때까지 '대기'하는 올바른 방법은 무엇입니까?

답변

3

직접 홈페이지로 이동하여 해당 자격 증명으로 로그인 한 다음 어떻게되는지 확인해 보셨습니까? 당신이 할 수 있다면, 당신은 그것이 작동하지 않는다는 생각을 배제 할 수 있습니다.

URL 이름과 일치하는 대신 내장 된 어설 션을 사용하는 것이 좋습니다. 좋아요 :

assert_response(:redirect) 
assert_redirected_to(dashboard_path) 

두 경우 모두 버튼을 클릭 할 때까지 기다릴 필요가 없습니다.

+0

좋은 지적. Test :: Unit이 아닌 Rspec을 사용하고 있지만 응답을 테스트해야합니다. – James

+0

그래도 헬퍼에 액세스 할 수 있습니다. 내 Rspec 테스트에서도 여전히 좋은 라이너라고 생각합니다. – MrDanA

관련 문제