[英]converting to devise - capybara::ElementNotFound:
我正在将用户身份验证从头转换为devise gem。 一切都已完成,并且看起来工作正常。 我更改了rspec测试,但遇到了一个反复出现的问题,我一直在寻找解决方案。
错误
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
Devise表单(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测试失败。
Capybara找不到电子邮件输入; 由于表单看起来正确构建,因此很可能在到达表单之前将Capybara重定向到了另一页。
您确定遵循该表单的路径是edit_user_registration_path(user)
而不是new_user_registration_path
或(如果您正在测试sign_in而不是sign_up,则更好) new_user_session_path
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.