Ruby on Railsチュートリアル第10章まで学習が進みました。
この章の最後に統合テスト用のコードを記述して実行した際に、以下のエラーが発生しました。
【エラー名称】
NoMethodError: undefined method `admin?’ for nil:NilClass
【改善方法】
※単なる記述漏れ
アプリ名/app/controller/users_controller.rb内のコードに記述漏れがあったため、エラー発生したことを確認。
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
before_action :logged_in_user, only: [:index, :edit, :update, :destroy]
上の:destroyが記述されていないせいで、統合テスト実行時にエラーを発生させてしまうため、コーディングは漏れがないように注意する必要があります。
※以下は、:destroyの記述漏れによる統合テスト実行時のエラー内容
.F Failure: UsersIndexTest#test_index_as_admin_including_pagination_and_delete_links [/Users/●●(ユーザー名)/Documents/Ruby_Files/sample01/sample_app_ver2/test/integration/users_index_test.rb:20]: "User.count" didn't change by -1. Expected: 33 Actual: 34