前提・実現したいこと
rails tutorialを進めております初学者です。
テストをパスする事が出来ず、困っています。
以下のエラーの該当箇所と思われる箇所を調べましたが、私には問題ないように思えどのように違うのかがわかりません。
1日考えたのですが、どうしてもわからず教えて頂けると大変助かります、よろしくお願いいたします。
発生している問題・エラーメッセージ
ec2-user:~/environment/sample_app (account-activation) $ rails test Running via Spring preloader in process 4401 Started with run options --seed 21781 Run options: --seed 21781--=---=---=---=---] 0% Time: 00:00:00, ETA: ??:??:?? # Running: . 38/2: [= ] 5% Time: 00:00:00, ETA: 00:00:0.. 38/4: [=== ] 10% Time: 00:00:00, ETA: 00:00:.. 38/6: [==== ] 15% Time: 00:00:00, ETA: 00:00:.. 38/8: [====== ] 21% Time: 00:00:00, ETA: 00:00:.... 38/12: [========= ] 31% Time: 00:00:00, ETA: 00:0. 38/13: [========== ] 34% Time: 00:00:01, ETA: 00:00:0.. 38/15: [============ ] 39% Time: 00:00:01, ETA: 00:00:. 38/16: [============= ] 42% Time: 00:00:01, ETA: 00:00:0. 38/17: [============== ] 44% Time: 00:00:01, ETA: 00:00:0. 38/18: [=============== ] 47% Time: 00:00:01, ETA: 00:00:0. 38/19: [================ ] 50% Time: 00:00:01, ETA: 00:00:0. 38/20: [================ ] 52% Time: 00:00:01, ETA: 00:00:0.. 38/22: [================== ] 57% Time: 00:00:01, ETA: 00:00:.. 38/24: [==================== ] 63% Time: 00:00:01, ETA: 00:00:.. 38/26: [===================== ] 68% Time: 00:00:01, ETA: 00:00: FAIL["test_should_redirect_update_when_logged_in_as_wrong_user", Minitest::Result, 1.420099104000002] test_should_redirect_update_when_logged_in_as_wrong_user#Minitest::Result (1.42s) Expected false to be truthy. test/controllers/users_controller_test.rb:44:in `block in <class:UsersControllerTest>' F 38/26: [===================== ] 68% Time: 00:00:01, ETA: 00:00:01 Failure: UsersControllerTest#test_should_redirect_update_when_logged_in_as_wrong_user [/home/ec2-user/environment/sample_app/test/controllers/users_controller_test.rb:44]: Expected false to be truthy. /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in `method': undefined method `test_should_redirect_update_when_logged_in_as_wrong_user' for class `Minitest::Result' (NameError) from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in `format_rerun_snippet' from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:23:in `record' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:803:in `block in record' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:802:in `each' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:802:in `record' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:334:in `run_one_method' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:321:in `block (2 levels) in run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:320:in `each' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:320:in `block in run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:360:in `on_signal' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:347:in `with_info_handler' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:319:in `run' from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/test_unit/line_filtering.rb:9:in `run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:159:in `block in __run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:159:in `map' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:159:in `__run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:136:in `run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:63:in `block in autorun' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application.rb:171:in `serve' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application.rb:135:in `run' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' from -e:1:in `<main>'
該当のソースコード
require 'test_helper' class UsersControllerTest < ActionDispatch::IntegrationTest def setup @user = users(:michael) @other_user = users(:archer) end test "should redirect index when not logged in" do get users_path assert_redirected_to login_url end test "should get new" do get signup_path assert_response :success end test "should redirect edit when not logged_in" do get edit_user_path(@user) assert_not flash.empty? assert_redirected_to login_url end test "should redirect update when not logged in" do patch user_path(@user), params: { user: { name: @user.name, email: @user.email } } assert_not flash.empty? assert_redirected_to login_url end test "should redirect edit when logged in as wrong user" do log_in_as(@other_user) get edit_user_path(@user) assert flash.empty? assert_redirected_to root_url end test "should redirect update when logged in as wrong user" do log_in_as(@other_user) patch user_path(@user), params: { user: { name: @user.name, email: @user.email } } assert flash.empty? assert_redirected_to root_url end test "should redirect destroy when not logged_in" do assert_no_difference 'User.count' do delete user_path(@user) end assert_redirected_to login_url end test "should redirect destroy when logged in as a non-admin" do log_in_as(@other_user) assert_no_difference 'User.count' do delete user_path(@user) end assert_redirected_to root_url end end
試したこと
補足情報に記載しましたusers_contoroller.rbの情報と見比べ、間違いがないか探しました。しかしどこがどう間違っているかがわからず、質問をさせて頂きました。
補足情報(FW/ツールのバージョンなど)
class UsersController < ApplicationController
before_action :logged_in_user, only: [:index,:edit, :update, :destroy]
before_action :correct_user, only: [:edit, :update]
before_action :admin_user, only: :destroy
def index
@users = User.paginate(page: params[:page])
end
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
UserMailer.account_activation(@user).deliver_now
flash[:info] = "Please check your email to activate your account"
redirect_to root_url
else
render 'new'
end
end
def edit
end
def update
if @user.update_attributes(user_params)
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end
def destroy
User.find(params[:id]).destroy
flash[:success] = "User deleted"
redirect_to users_url
end
private
def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation) end def logged_in_user unless logged_in? store_location flash[:danger] = "Please log in." redirect_to login_url end end def correct_user @user = User.find(params[:id]) redirect_to(root_url) unless current_user?(@user) end def admin_user redirect_to(root_url) unless current_user.admin? end
end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。