application_controller.rb のrspecの書き方
例えばログインしたユーザーのニックネーム等に不備があった場合まず編集画面にリダイレクトさせたいという処理
application_controller.rb
class ApplicationController < ActionController::Base before_action :authenticate_user! before_action :invalid_name_redirect_to def invalid_name_redirect_to redirect_to edit_user_path(current_user) if current_user.invalid_name? end end
こんな感じでrspecがかけた
spec/controllers/application_controller_spec.rb
require "rails_helper" RSpec.describe ApplicationController, type: :controller do let(:user) { create(:user, name: nil) } controller do def index render body: nil end end describe "#invalid_name_redirect_to" do before { sign_in user } example "ニックネームに不備があった場合プロフィール編集画面に遷移する" do get :index expect(response).to redirect_to(edit_user_path(current_user)) end end end
controller do の中にモックのような感じでindexを書いてリクエストを投げてやればテストできた