前提・実現したいこと
以下のようなテストをした時に、エラーが発生します。
1.違うユーザーがログインしようとした時、リダイレクトを返す。
2.ログインしていない状態で、編集しようとした時に、リダイレクトを返す。
これらのエラーを解消したいです。
発生している問題・エラーメッセージ
ERROR["test_should_redirect_edit_when_logged_in_as_wrong_user", #<Minitest::Reporters::Suite:0x00005592a4fb54c8 @name="UsersControllerTest">, 1.1818991569998616] test_should_redirect_edit_when_logged_in_as_wrong_user#UsersControllerTest (1.18s) NoMethodError: NoMethodError: undefined method `email' for nil:NilClass test/test_helper.rb:24:in `log_in_as' test/controllers/users_controller_test.rb:27:in `block in <class:UsersControllerTest>' ERROR["test_should_redirect_update_when_logged_in_as_wrong_user", #<Minitest::Reporters::Suite:0x00005592a502b920 @name="UsersControllerTest">, 1.1931694939999034] test_should_redirect_update_when_logged_in_as_wrong_user#UsersControllerTest (1.19s) NoMethodError: NoMethodError: undefined method `email' for nil:NilClass test/test_helper.rb:24:in `log_in_as' test/controllers/users_controller_test.rb:34:in `block in <class:UsersControllerTest>' ERROR["test_should_redirect_update_when_not_logged_in", #<Minitest::Reporters::Suite:0x00007fc120c57a18 @name="UsersControllerTest">, 1.235307616] test_should_redirect_update_when_not_logged_in#UsersControllerTest (1.24s) ActionController::UrlGenerationError: ActionController::UrlGenerationError: No route matches {:action=>"show", :controller=>"users", :id=>nil}, missing required keys: [:id] test/controllers/users_controller_test.rb:20:in `block in <class:UsersControllerTest>' 28/28: [====================] 100% Time: 00:00:01, Time: 00:00:01 Finished in 1.43715s 28 tests, 62 assertions, 0 failures, 3 errors, 0 skips
該当のソースコード
以下のurlのgithubの中にあります。
https://github.com/yuyakesan/rails_third
一応、該当のテストのファイルを掲載します。
Ruby
1require 'test_helper' 2 3def setup 4 @user = users(:michael) 5 @other_user = users(:archer) 6end 7 8class UsersControllerTest < ActionDispatch::IntegrationTest 9 test "should get new" do 10 get signup_path 11 assert_response :success 12 end 13 14 test "should redirect index when not logged in" do 15 get users_path 16 assert_redirected_to login_url 17 end 18 19 test "should redirect update when not logged in" do 20 patch user_path(@user), params: { user: { name: @user.name, 21 email: @user.email } } 22 assert_not flash.empty? 23 assert_redirected_to login_url 24 end 25 26 test "should redirect edit when logged in as wrong user" do 27 log_in_as(@other_user) 28 get edit_user_path(@user) 29 assert flash.empty? 30 assert_redirected_to root_url 31 end 32 33 test "should redirect update when logged in as wrong user" do 34 log_in_as(@other_user) 35 patch user_path(@user), params: { user: { name: @user.name, 36 email: @user.email } } 37 assert flash.empty? 38 assert_redirected_to root_url 39 end 40end
試したこと
app/controllers/users_controller.rbは、チュートリアル通りに、書き直したので、おそらく間違えていないと思います。
補足情報(FW/ツールのバージョンなど)
railsのバージョンは6.0.3です。
あなたの回答
tips
プレビュー