Я пытаюсь проверить вход и выход в этом приложении RoR. Мое испытание таково:Майкл Хартл Ruby on Rails Tutorial ch 8.3 | Не знаю, почему этот тест терпит неудачу.
test "login with valid information followed by logout" do
get login_path
post login_path, session: { email: @user.email, password: 'password' }
assert is_logged_in?
assert_redirected_to @user
follow_redirect!
assert_template 'users/show'
assert_select "a[href=?]", login_path, count: 0
assert_select "a[href=?]", logout_path
assert_select "a[href=?]", user_path(@user)
delete logout_path
assert_redirected_to root_url
assert_not is_logged_in? # <-- this line is the one that cocks up.
follow_redirect!
assert_select "a[href=?]", login_path
assert_select "a[href=?]", logout_path, count: 0
assert_select "a[href=?]", user_path(@user), count: 0
end
Маркированная линия - единственная линия, которая терпит неудачу, и я не знаю, почему. Это точно так же, как и в самой книге.
Отправка запроса удаления для выхода из системы путей путей к этой функции:
def destroy
logout
redirect_to root_url
end
Функция выхода из системы заключается в следующем:
def logout
session.delete(:user_id)
@current_user = nil
end
И is_logged_in? функция такова:
def is_logged_in?
!current_user.nil?
end
Все 3 из них в точности соответствуют тому, как написано в книге, вплоть до названий. (У меня были свои лучшие имена, но я их отменил отчаяния.)
Сайт, похоже, работает нормально. Here's ссылку, чтобы вы могли видеть сами. Я могу войти и выйти просто отлично.
Я использовал assert_not в другом месте, и все работает отлично. Например:
test "login with invalid information" do
get login_path
assert_template 'sessions/new'
post login_path, session: { email: "", password: "" }
assert_template 'sessions/new'
assert_not flash.empty?
get root_path
assert flash.empty?
end
Этот тест преуспевает. («Вспышка» относится к маленькому ящику в верхней части страницы, в котором говорится, что в этом случае их входная информация недействительна.)
У кого-нибудь есть идеи? Большое спасибо.
Хорошо, я пробовал это по-своему, и теперь он отлично работает. Большое спасибо! –
@LlamaTarianism yup no problem :) –