Я новичок в рельсах, и тестирование по-прежнему немного загадочно для меня. Я безуспешно искал способ тестирования форм без добавления драгоценных камней. Вот что я пытаюсь сделать.Проверка формы изменения пароля Rails
В моей форме есть поля old_password, new_password и confirm_password.
<%= form_for @user, :url => "change_password" do |f| %>
<%= f.label :Current_Password %>
<%= f.password_field :old_password, class: 'form-control' %>
<%= f.label :New_Password %>
<%= f.password_field :new_password, class: 'form-control' %>
<%= f.label :Confirm_Password %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.submit "Change Password", class: "btn btn-primary" %>
<% end %>
Мои маршруты
# Users
resources "users"
patch 'users/:id/change_password' => 'users#change_password'
Мои пользователи контроллера действия
def change_password
# Change password.
@user = User.find(params[:id])
if @user and @user.authenticate(params[:user][:old_password])
if params[:user][:new_password] == params[:user][:password_confirmation]
@user.update_attribute(:password_digest,
User.digest(params[:user][:new_password]))
flash[:success] = "Password changed sucesfully."
redirect_to @user
else
flash.now[:danger] = "Password and confirmation do not match."
render 'edit'
end
else
flash.now[:danger] = "Incorrect password."
render 'edit'
end
end
Мой тест. Это очень похоже на тест из Rails Tutorial. Это часть, которую я не понимаю.
test "password change wrong password" do
get edit_user_path(@user)
assert_template 'users/edit'
# Submit wrong password.
patch user_path(@user), user: { old_password: "invalid",
new_password: "foobar11",
password_confirmation: "foobar11" }
# Flash not empty.
assert_not flash.empty?
# Redirected to edit page.
assert_template 'users/edit'
# Password not changed in database.
end
Тест терпит неудачу на assert_template «пользователей/редактировать»
expecting <"users/edit"> but rendering with <[]>
Кажется, что представление было успешным, и вы получили перенаправлены на страницу пользователя. Попробуйте добавить некоторый 'raise', чтобы узнать, какой путь ваш тест. – BroiSatse
У меня есть часть шаблона, но теперь я не знаю, как проверить, изменен ли пароль в базе данных. – Terrytreks