2011-02-24 1 views
2

필자가 작성한 첫 번째 레일 앱은 핸드 롤링 인증을 railstutorial에서 사용했습니다.테스트를 위해 허가 상태에서 인증 상태를 얻는 방법

두 번째 앱의 경우 Clearance를 사용하고 있습니다. 로그인/로그 아웃 링크를 클릭했는지 여부에 대한 통합 테스트를 작성하려고합니다. 내가 정리와 동등한 일을 어떻게

describe "success" do 
    it "should sign a user in and out" do 
    user = Factory(:user) 
    visit signin_path 
    fill_in :email, :with => user.email 
    fill_in :password, :with => user.password 
    click_button 
    controller.should be_signed_in 
    click_link "Sign out" 
    controller.should_not be_signed_in 
    end 
end 

을 다음 railstutorial 버전에서 나는 다음과 같은 사용할 수 있습니까? 나는 그것을 해결할 수 없다. 컨트롤러가 제로라고 말하고있는 것 같습니다.

답변

0

나는 EXACT 같은 일을하고, Rails Tutorial를 읽고 Clearance를 사용하여 내 응용 프로그램을 시작했습니다. 사용자가 올바른 출발점처럼 보였으므로 시작한 곳입니다. 나는 Rails 링크 등을 표시하는 기본 정적 홈 페이지를 대체하지도 않았다. 나는 그것이 실제로 문제라고 믿는다. 클리어런스는 사용자 프로필 페이지 또는 기타 항목을 정의하지 않으므로 로그인 할 때 홈 페이지로 리디렉션됩니다 (다른 곳으로 가고 있지만 로그인해야하는 경우 제외). 기본 홈 페이지는 정적 파일이므로 일반적인 Rails 요청주기를 거치지 않고 컨트롤러를로드하지 않습니다.

난 그냥 (레일 튜토리얼, 3 장에서와 같은) 슈퍼 간단한 페이지 컨트롤러를 추가 결국 그래서 로그인 후 동적 페이지로 리디렉션 것입니다.이 거의 패스 위의 테스트를했다. 내가 일을 작업을 진행하는 데 필요한 마지막 편집은 그 click_link 그것이 aparently 기본적으로 수행하는 대신 :get:delete 방법을 사용한다 지정, 여기

click_link "Sign Out", :method => :delete 

했다. 나는 레일스에 아직 익숙하지 않다. 겨우 며칠 전 책을 간신히 마쳤다. 그래서 나는 단지 click_link이 책에서 일했지만 내 앱에는 없었던 것일까? (레일즈 3.0에서 3.1로 옮겨 갔을 까?) 지나가는 모든 것을 얻었습니다.

+0

나는 심지어 내가 묻는 것을 알아 내기 위해 내 자신의 질문을 읽어야했다! 나는 결국 이것이 완전히 다른 방법이라고 생각하지만 귀하의 대답은 내가 한 것에 대한 올바른 해결책입니다. – Nick

+0

예, 질문은 오히려 오래된쪽에 있지만, 제 상황은 제가 정확히 대답해야했던 정확한 일치였습니다. :) – Chaulky

관련 문제