처음부터 내 사용자 인증을 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 테스트가 실패합니다.
글쎄, 테스트는 현재 로그인하지 않은 사용자가 자신의 편집 양식을 방문하려고 시도하는 것입니다. 그것은 이것을 허용해서는 안되며, 폼에 로그인을해야한다. (이것은 내가 첨부 한 양식 인 new_user_session이다.) 사용자가 새 세션을 만든 후에는 원래 의도했던 편집 양식으로 리디렉션됩니다. 그런 다음 테스트는 로그인 후 "사용자 편집"이 표시되는지 확인해야합니다. 나는 편집 양식을보기 전에 카피 바라에게 사용자를 사인시킬 수 없습니다. –
죄송합니다. @SeanL, 나는 그 흐름을 이해합니다, 당신 말이 맞아요. 카피 바라에 도착한 페이지를 확인할 수 있습니까? 귀하의'edit_user_registration_path (user)'방문 단계가 지나가므로 어딘가에 도착하고 있습니다. – Galen
나는 카피 바라가 어디로 가고 있는지에 상당히 혼란 스럽다. 필자는 fill_in (사용자 정보)에서 주석 버튼을 클릭하여 주석을 달아 보았고 테스트의 하단 부분을 변경하여 페이지에 h1, 텍스트 : '로그인'이 있어야하는지 확인했습니다. 그것을 말하지 못했습니다. 로그인이 표시되지 않습니다. Net Net 나는 카피 바라가 어디로 가고 있는지 전혀 모른다. 당신이 다른 제안을하지 않는 한 나는 포기하고 지금 시험을 주석 처리 할 것입니다. 고맙습니다. –