railsチュートリアル8章にてrails testが通らない
Q&A
Closed
解決したいこと
railsチュートリアル8章にてrails testが通らず困っています。
解決方法を教えていただけないでしょうか。
発生している問題・エラー
Error:
UsersLoginTest#test_login_with_valid_information_followed_by_logout:
NoMethodError: undefined method `log_in' for #<SessionsController:0x00000000009010>
Did you mean? login_url
app/controllers/sessions_controller.rb:9:in `create'
test/integration/users_login_test.rb:23:in `block in <class:UsersLoginTest>'
rails test test/integration/users_login_test.rb:21
該当するソースコード
test/integration/users_login_test.rb
require 'test_helper'
class UsersLoginTest < ActionDispatch::IntegrationTest
def setup
@user = users(:michael)
end
test "login with valid email/invalid password" do
get login_path
assert_template 'sessions/new'
post login_path, params: { session: { email: @user.email,
password: "invalid" } }
assert_not is_logged_in?
assert_template 'sessions/new'
assert_not flash.empty?
get root_path
assert flash.empty?
end
test "login with valid information followed by logout" do
get login_path
post login_path, params: { 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_not is_logged_in?
assert_redirected_to root_url
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
end
app/controllers/session_controller.rb
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by(email: params[:session][:email].downcase)
if user&.authenticate(params[:session][:password])
# ユーザーログイン後にユーザー情報のページにリダイレクトする
log_in user
redirect_to user
else
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
end
def destroy
log_out
redirect_to root_url
end
end
自分で試したこと
railsチュートリアルを描いた他人のコードを参考に修正しました。
よろしくお願いします。
0