2013-05-08 2 views
0

처음부터 내 사용자 인증을 devise gem으로 변환하는 중입니다. 모두 완료되고 잘 작동하는 것처럼 보입니다. 내 rspec 테스트를 변경했지만 해결책을 찾기 위해 검색 한 하나의 반복 문제가 있습니다.devise로 변환 - capybara :: ElementNotFound :

오류

2) AuthenticationPages authorization for non-signed-in users when attempting to visit a protected page after signing in should render the desired protected page 
    Failure/Error: fill_in :email, with: user.email 
    Capybara::ElementNotFound: 
     cannot fill in, no text field, text area or password field with id, name, or label  'email' found 
    # (eval):2:in `fill_in' 
    # ./spec/requests/authentication_pages_spec.rb:53:in `block (5 levels) in <top (required)>' 

테스트

describe "for non-signed-in users" do 
    let(:user) { FactoryGirl.create(:user)} 

    describe "when attempting to visit a protected page" do 
     before do 
      visit edit_user_registration_path(user) 

      fill_in "Email", with: user.email 
      fill_in "Password", with: user.password 
      click_button "Sign in" 
     end 

     describe "after signing in" do 
      it "should render the desired protected page" do 
       page.should have_selector('title', text: 'Edit user') 
      end 
     end 
    end 

유증 양식 (new_user_session - 편집 사용자 정보를 볼 수 전에 나타납니다)

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> 
    <%= f.label :email %> 
    <%= f.email_field :email, :autofocus => true %> 

    <%= f.label :password %> 
    <%= f.password_field :password %> 

    <% if devise_mapping.rememberable? -%> 
    <%= f.check_box :remember_me %> <%= f.label :remember_me %> 
    <% end -%> 

    <%= f.submit "Sign in", class: "btn btn-large btn-primary" %> 
<% end %> 
<%= render "devise/shared/links" %> 

브라우저에서 테스트 할 때 실제로 제대로 작동하지만 rspec 테스트가 실패합니다.

답변

0

카피 바라가 이메일 입력을 찾을 수 없습니다. 양식이 올바르게 작성된 것처럼 보이기 때문에 대부분의 카피 바라는 양식에 도달하기 전에 다른 페이지로 리디렉션됩니다.

경로가 edit_user_registration_path(user)이고, 예를 들어 new_user_registration_path이 아니거나 (sign_in을 테스트하고 sign_up이 아닌 경우 더 좋음) new_user_session_path?

+0

글쎄, 테스트는 현재 로그인하지 않은 사용자가 자신의 편집 양식을 방문하려고 시도하는 것입니다. 그것은 이것을 허용해서는 안되며, 폼에 로그인을해야한다. (이것은 내가 첨부 한 양식 인 new_user_session이다.) 사용자가 새 세션을 만든 후에는 원래 의도했던 편집 양식으로 리디렉션됩니다. 그런 다음 테스트는 로그인 후 "사용자 편집"이 표시되는지 확인해야합니다. 나는 편집 양식을보기 전에 카피 바라에게 사용자를 사인시킬 수 없습니다. –

+0

죄송합니다. @SeanL, 나는 그 흐름을 이해합니다, 당신 말이 맞아요. 카피 바라에 도착한 페이지를 확인할 수 있습니까? 귀하의'edit_user_registration_path (user)'방문 단계가 지나가므로 어딘가에 도착하고 있습니다. – Galen

+0

나는 카피 바라가 어디로 가고 있는지에 상당히 혼란 스럽다. 필자는 fill_in (사용자 정보)에서 주석 버튼을 클릭하여 주석을 달아 보았고 테스트의 하단 부분을 변경하여 페이지에 h1, 텍스트 : '로그인'이 있어야하는지 확인했습니다. 그것을 말하지 못했습니다. 로그인이 표시되지 않습니다. Net Net 나는 카피 바라가 어디로 가고 있는지 전혀 모른다. 당신이 다른 제안을하지 않는 한 나는 포기하고 지금 시험을 주석 처리 할 것입니다. 고맙습니다. –

관련 문제