Я в процессе преобразования моей аутентификации пользователя с нуля в драгоценный камень разработки. Все завершено и работает нормально. Я изменил свои тесты 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). После того, как пользователь создает новый сеанс, они затем перенаправляются в форму редактирования, изначально планируемую для нее. Затем тест должен проверить, что после того, как в представлении в представлении появится «Редактировать пользователя». Я не могу заставить capybara подписать пользователя, прежде чем увидеть форму редактирования. –
Извините @SeanL, я понимаю поток, вы правы. Можете ли вы проверить, на какой странице прибывает Capybara? Шаг 'visit edit_user_registration_path (user)' проходит, поэтому он прибывает куда-то. – Galen
Я очень озадачен тем, куда идет капибара. Я попробовал комментирование из fill_in (информация о пользователе), чтобы нажать кнопку - и изменил нижнюю часть теста, чтобы увидеть, должна ли страница иметь h1, текст: «Войти». Он не сказал, что он не отображается. Net Net Я понятия не имею, куда уходит capybara. На данный момент я собираюсь отказаться и прокомментировать тест, если у вас нет других предложений. Спасибо –